> On my machine the following program:
> 
> > main = do putStr "According to ghc-4.02 (1-maxBound)^2 = "
> >           putStr $ show mult1
> >           putStr "\nAccording to ghc-4.02 (maxBound-1)^2 = "
> >           putStr $ show mult2
> >      where mult1, mult2 :: Int
> >            mult1 = (1-maxBound)*(1-maxBound)
> >            mult2 = (maxBound-1)*(maxBound-1)
> 
> outputs:
> 
> According to ghc-4.02 (1-maxBound)^2 = 4
> According to ghc-4.02 (maxBound-1)^2 = 4
> 
> Mod maxBound the result of both multiplication should have been 1.

Int arithmetic on GHC and Hugs is modulo 2^32, i.e. maxBound + 1.

Cheers,
        Simon

Reply via email to