fixity resolution

Christian Maeder Christian.Maeder at
Tue Jul 6 13:12:22 EDT 2010

"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

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.

More information about the Haskell-prime mailing list