Pixel <[EMAIL PROTECTED]> writes: > Quite a few pbs with overflow on Int too:
> i :: Int > i = 0x7fffffff > i_plus_1 = i+1 > -- ghc : -2147483648 > -- hugs: -2147483648 Given that Int represents modulo arithmetic, this is all right, but > i_succ = succ i > -- ghc : *** Exception: Prelude.Enum.succ{Int}: tried to take `succ' of maxBound > -- hugs: -2147483648 GHC's behavior here is inconsequent, I think. I suppose it is trying to maintain the invariant succ i > i > j :: Int > j = 0x80000000 > -- ghc : -2147483648 > -- hugs: Program error: {primIntegerToInt 2147483648} I'm not sure which behavior I prefer. You're specifying a constant out of range for the datatype. > k :: Int > k = 0x100000000 > -- ghc : 0 > -- hugs: Program error: {primIntegerToInt 4294967296} Same as above. > i':: Integer > i'= 0x7fffffff > i_plus_1' = i+1 > -- ghc : 2147483648 > -- hugs: 2147483648 > i_succ' = succ i' > -- ghc : 2147483648 > -- hugs: -2147483648 I think Hugs is wrong. Integer shouldn't wrap. The greatest problem with Integer seem to be different implementations, IMHO. -kzm -- If I haven't seen further, it is by standing in the footprints of giants _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell