Re: Wanted: warning option for usages of unary minus

On Thu, May 17, 2007 at 06:40:04PM +0200, Twan van Laarhoven wrote:
Simon Marlow wrote:
...
Really? I'm beginning to have second thoughts about the proposed change to negation for Haskell'. The main reason, and this isn't pointed out as well as it should be on the wiki, is that "x-1" will cease to be an infix application of (-), it will parse as x applied to the literal (-1). And this is different from "x - 1"
There is one other alternative for parsing: "-" is a unary minus if and only if it is a) preceded by whitespace or one of "[({;,", and b) not followed by whitespace.
So: x - 1 == (-) x 1 x-1 == (-) x 1 x -1 == x (negate 1) x -(1) == x (negate 1) x (-1) == x (negate 1) x (- 1) == x (\y -> y - 1)
also (c) has a digit after it. also note that a big point of this is that we can get rid of 'negate' in the translation, so the literal -1 now desugars to (fromInteger -1) rather than the current (negate (fromInteger 1)) (which requires 2 dictionary lookups for a simple constant! sigh. we also have the option of removing negate from the 'Num' class if so desired. John -- John Meacham - ⑆repetae.net⑆john⑈
participants (1)
-
John Meacham