> 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