[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