Negation

jur jur at cs.uu.nl
Mon Feb 8 14:04:44 EST 2010


On Feb 8, 2010, at 5:18 PM, Simon Peyton-Jones wrote:

> Folks
>
> Which of these definitions are correct Haskell?
>
>  x1 = 4 + -5
>  x2 = -4 + 5
>  x3 = 4 - -5
>  x4 = -4 - 5
>  x5 = 4 * -5
>  x6 = -4 * 5
>
> Ghc accepts x2, x4, x6 and rejects the others with a message like
> Foo.hs:4:7:
>    Precedence parsing error
>        cannot mix `+' [infixl 6] and prefix `-' [infixl 6] in the  
> same infix expression
>
> Hugs accepts them all.
Helium accepts them all as well, and also delivers the, for me,  
expected results.

>
> I believe that the language specifies that all should be rejected.  http://haskell.org/onlinereport/syntax-iso.html
>
>
> I think that Hugs is right here.  After all, there is no ambiguity  
> in any of these expressions.  And an application-domain user found  
> this behaviour very surprising.
>
> I'm inclined to start a Haskell Prime ticket to fix this language  
> definition bug.  But first, can anyone think of a reason *not* to  
> allow all the above?
>
> Simon


Jurriaan




More information about the Haskell-prime mailing list