[Haskell-cafe] map (-2) [1..5]

Brian Hulley brianh at metamilk.com
Thu Aug 17 06:14:32 EDT 2006


Tamas K Papp wrote:
> The code in the subject generates an error.  I understand why this is
> (- is treated as part of the number), but I don't know how to solve
> it, ie how to tell Haskell that - is a function/binary operator?

Actually looking at the Haskell98 report, -2 seems to be treated as (negate 
(2)), which I find really strange because there does not appear to be any 
way of specifying negative literals, and the range of negative values is 
always 1 more than the range of positive values (when you use a fixed 
bit-length representation eg Int instead of Integer)

I'd have thought it would have been simpler to just make the rule that -2 
(no spaces between '-' and '2') would be a single lexeme, and then people 
could just use (negate x) or (0 - x) instead of having a special rule and a 
whole lot of confusion just for one arithmetic operator, which is never 
actually needed in the first place (just as we don't need /x because it is 
simple enough to write 1/x).

I see with great disappointment that Haskell' Trac ticket#50 [1] looks as if 
it will not be accepted [2] so we're likely to be stuck with this for years 
to come...

[1] http://hackage.haskell.org/trac/haskell-prime/ticket/50
[2] http://hackage.haskell.org/trac/haskell-prime/wiki/StrawPoll-2

So in answer to your question, you can't (except for workarounds already 
posted).

Regards, Brian.
-- 
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.

http://www.metamilk.com 



More information about the Haskell-Cafe mailing list