On 03/02/2006, at 9:25 AM, Wolfgang Jeltsch wrote:

Am Mittwoch, 1. Februar 2006 01:32 schrieb Patryk Zadarnowski:
[...]

The proposal would be to remove the unary "-" altogether, and, instead, extend the lexical syntax of numeric constant to allow "+" and "-" prefix.

Would this mean that (-x) is a section while (-1) isn't? That would be
confusing.

Apart from this, I would like to see the only unary operator of Haskell
removed.

Yes, it *would* mean that (-x) and (- 1) are sections while (-1) isn't, and
yes, that would be slightly confusing (and a good compiler might want to
issue a warning whenever it sees a construct of the form (-identifier).

However, it is NOT more confusing than what we already have with
the (.) operator. Consider:

(Just . not) is a perfectly reasonable function of type (Bool -> Maybe Bool)

But:

(Just.not) has a completely different meaning (and is probably illegal unless you have a module called "Just", which exports a function called (not).)

In the case of the (.) operator, the confusion is more significant, since the meaning is context-sensitive. With the proposed "-" operator, it would be purely lexical, and
therefore easy to warn about (if the compiler wishes to do so.)

In both cases, accidentally omitting a space will result in a compiler or type error anyway, since (-x) has a different type than (- x), so such accidents will be picked
by the compiler rather than generating invalid code.

In summary: yes, the change would create *some* confusion. But much less confusion
than that caused by the current treatment of (-).

        Pat.


_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to