http://www.haskell.org/~simonmar/haskell-2010-draft-report-2/haskellch10.html#x17-17300010

"Fixity resolution also applies to Haskell patterns, but patterns are a
subset of expressions so in what follows we consider only expressions
for simplicity."

The string "1 * - 1" is legal as pattern, but rejected as expression!

Furthermore fixity resolution does not distinguish between constructors
and other operators as it should according to the grammar:

pat      →      lpat qconop pat          (infix constructor)
        |       lpat


funlhs   →      var apat { apat }
        |       pat varop pat
        |       ( funlhs ) apat { apat }


"a : b * c : d = undefined" is currently rejected with:

"cannot mix `:' [infixr 5] and `Main.*' [infixl 9] in the same infix
expression"

but should be fine by the given grammar (rule "pat varop pat").

Cheers Christian

P.S. like in my proposal for infixexp I would change pat to:

pat      →      pat qconop pat           (infix constructor)
        |       lpat

for the sake of a better presentation only.
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to