The enum instance for Word32 suffered from numeric overflow. That is, these expressions:
The enum instance for Word32 suffered from numeric overflow.
That is, these expressions:

  [maxBound .. ] :: [Word32]
  [maxBound .. maxBound] :: [Word32]

should both have length 1 but the length seemed to be closer to 2^32
(I got bored before it got that far though).

I'm not completely happy with my fix (it's a little clunky) but at
least it works now.  (If I was a good Haggis, I'd go look at how GHC,
NHC and HBC handle this.)

The Int instance suffers from the same problem but, in that case, the
correct behaviour (at least for the first example) is probably to
raise an error or to give an infinite list (which it does) not to give
a finite list.

FranklinChen/Hugs,FranklinChen/Hugs,FranklinChen/Hugs,FranklinChen/Hugs,FranklinChen/Hugs,FranklinChen/Hugs,FranklinChen/Hugs