On Oct 27, 2005, at 5:34 PM, Sebastian Sylvan wrote:
import Data.Word
import Test.QuickCheck
instance Arbitrary Word32 where
arbitrary = do let mx,mn :: Integer
mx = fromIntegral (maxBound :: Word32)
mn = fromIntegral (minBound :: Word32)
c <- choose (mx, mn)
return (fromIntegral c)
Awesome! This actually works!
instance Arbitrary Word32 where
arbitrary = do c <- arbitrary :: Gen Integer
return (fromIntegral c)
Though I'm not sure of the range and distribution of the generated
Word32's (since it would depend on how fromIntegral behaves
transforming an Integer to a Word32 when the Integer is larger than
maxBound::Word32).
It wraps around, apparently
*Foo> maxBound :: Word32
4294967295
*Foo> let x :: Integer = 4294967295 + 1
*Foo> x
4294967296
*Foo> fromIntegral x :: Word32
0
*Foo> let x :: Integer = 4294967295 + 10
*Foo> x
4294967305
*Foo> fromIntegral x :: Word32
9
*Foo> let x :: Integer = 4294967295 * 2
*Foo> x
8589934590
*Foo> fromIntegral x :: Word32
4294967294
Thanks, Joel
--
http://wagerlabs.com/
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe