I'm puzzled by a detail in the Report, which seems to contradict itself.

On page 13 it says:

        The special form -e denotes prefix negation, [...] and is simply
        syntax for negate (e), where negate is as defined in the standard
        prelude.

The standard prelude defines negate as a function, which by default has
precedence 10.  But the context free syntax on page 134 says:

        <lexp6> ::= - <exp7>

which gives prefix - precedence 6.

So, how do we parse

        - a * b         -- where * has precedence 7

If we use the context free syntax, we get

        -(a * b)

but if we remove the syntactic sugar first we get

        (negate a) * b

Perhaps the point could be resolved by clarifying how the sugar is to be
removed.

-Norman
-------
Messing about with signature files fills a much-needed gap in the working
day.


Reply via email to