Fixed.

Simon

| -----Original Message-----
| From: Simon Marlow [mailto:[EMAIL PROTECTED]] 
| Sent: 17 May 2002 10:34
| To: Thomas Hallgren; [EMAIL PROTECTED]
| Subject: RE: Negative literals and the meaning of case -2 of 
| -2 -> True
| 
| 
| 
| > To find out how Haskell implementations treat negated
| > literals, I tested 
| > the following program:
| > 
| > ------------------------------------------------
| > main = print (minusTwo,trueOrFalse)
| > 
| > minusTwo = -2::N
| > 
| > trueOrFalse =
| >     case minusTwo of
| >       -2 -> True
| >       _ -> False
| > 
| > data N = Negate N | FromInteger Integer deriving (Eq,Show)
| > 
| > instance Num N where
| >   negate = Negate
| >   fromInteger = FromInteger
| > -------------------------------------------------
| > 
| > The result is:
| > 
| >     * ghc 5.02.2: main outputs: (FromInteger (-2),True)
| 
| GHC has two bugs in this area, one of which has been fixed 
| recently. The current output is (Negate (FromInteger 
| 2),False) (i.e. the same as hbc).  We were being a little too 
| eager to replace 'negate (fromInteger N)' by 'fromInteger 
| (-N)'.  There is also a bug in the pattern handling, however.
| 
| Thanks for a nice test case...
| 
| Cheers,
|       Simon
| 
| _______________________________________________
| Haskell mailing list
| [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
| 
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to