On 02/08/2009 22:38, Niklas Broberg wrote:
I updated the code on the wiki page: the previous version didn't handle
prefix negation - did you implement that yourself in HLint?
No, I didn't implement prefix negation in HLint - it never came up as
an issue. Perhaps the underlying HSE library dealt with it for me -
Niklas would know.
In haskell-src-exts (and haskell-src, since that's inherited), unary
minus binds tighter than any infix operator:
exp0b :: { PExp }
: exp0b qop exp10b { InfixApp $1 $2 $3 }
| dvarexp { $1 }
| exp10b { $1 }
exp10b :: { PExp }
: 'case' exp 'of' altslist { Case $2 $4 }
| '-' fexp { NegApp $2 }
| 'do' stmtlist { Do $2 }
| 'mdo' stmtlist { MDo $2 }
| fexp { $1 }
It has never come up as a problem. Guess that's a point in case for
getting rid of unary minus as an operator. :-)
I think someone should propose this change for next year's Haskell
revision. We have evidence that (a) the current precedence of prefix
negation is confusing, and (b) it is rarely relied upon.
Changing the syntax as above is better IMO than the suggestion in
http://hackage.haskell.org/trac/haskell-prime/wiki/NegativeSyntax
to move prefix negation into the lexical syntax of numbers.
Cheers,
Simon
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime