word bug (?)
"Laudien, Joachim" <[email protected]>
| Newsgroups | gmane.comp.lang.haskell.hugs.bugs |
|---|---|
| Message-ID | <[email protected]> |
Hi, I found a "Pentomino Puzzle Solver in Haskell". Trying it, I got the error message ERROR "D:\Games\Pentominos\PolyominoHaskell\FillBoard.lhs":208 - Instances of (Num Word64, Bits Word64) required for definition of ominoBits So I looked into Word.hs and Bits.hs. While making Word64 an instance of Num was relatively straightforward by converting to Integer and back, I did not immediately understand the semantics of the bit operations. I started to experiment: Word> (bit 7 :: Word8) `shift` 2 0 ... Now I'm totally confused: on the machine in my office, where I'm writing this mail, using Hugs December 2001 with Windows XP, I get the above, correct result. But at home, with the same Hugs and Windows NT 4, I get 512. Ah, I see, it's the show function... Word> :s -u Word> (bit 7 :: Word8) `shift` 2 512 But should it be left to the show to put the result into its range? newtype Word8 = W8 Word32 word8ToWord32 (W8 x) = x .&. 0xff word32ToWord8 = W8 Shouldn't it be the other way round word8ToWord32 (W8 x) = x word32ToWord8 = W8 (x .&. 0xff) ? Kind regards, Joachim Wolf Laudien