Second draft of the Haskell 2010 report available

Simon Marlow marlowsd at gmail.com
Wed Jul 7 10:06:26 EDT 2010


On 06/07/2010 13:17, Christian Maeder wrote:
>
> http://www.haskell.org/~simonmar/haskell-2010-draft-report-2/haskellch3.html
>
> infixexp → 	lexp qop infixexp (infix operator application)
> 	| 	- infixexp     	  (prefix negation)
> 	| 	lexp
>
> This grammar rule describes a right associative nesting of (any) infix
> operators "qop" and prefix negation as binding weaker than any infix.
>
> Thus a parser would create from "- 1 /= 1&&  a" the tree
>   "- (1 /= (1&&  a))".

The grammar is non-ambiguous and all you have to do is flatten the 
result to apply fixity resolution.  I don't really see how generalising 
the grammar would help - the tree still has to be flattened to apply 
fixity resolution, and the parser would have to make an arbitrary choice 
from one of the possible parses.  Or perhaps I'm missing something here?

Cheers,
	Simon



> Would it not be better to give an ambiguous grammar and leave it to the
> infix resolution algorithm to allow only the intended trees, rather than
> letting the infix resolution algorithm correct a wrong tree?
>
> My suggestion would be to change the rule to:
>
> infixexp → 	infixexp qop infixexp (infix operator application)
> 	| 	- infixexp     	  (prefix negation)
> 	| 	lexp
>
> thus only replacing the first lexp by infixexp.
>
> Cheers Christian
>
> _______________________________________________
> Haskell-prime mailing list
> Haskell-prime at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-prime



More information about the Haskell-prime mailing list