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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.