On 11/13/05, Murray Gross <[EMAIL PROTECTED]> wrote: > > Here is my trivial program: > > > import Bits > > main = putStr (show(bit 0::Int)++" "++show (mybit 0)) > > mybit:: Int -> Int > mybit x = setBit (bit 0) x > > > > The output (with GHC-5) is > > 1 1 > > My question: Why is (bit 0) equal to 1 and not 0?
If only the first bit in an Integer is set then the number is equal to 1. > That first bit is set > regardless of the value of x (I have tried several), although in each > case, the bit I expect to be set is also set (e.g., mybit 4 yields 17). http://haskell.org/ghc/docs/latest/html/libraries/base/Data-Bits.html 'setBit (bit 0) 4' => 'setBit 1 4' => (binary) 10001 => (dec) 17 You're setting the fifth bit in '1' instead of setting the seconded bit in '4'. -- Friendly, Lemmih _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe