Sebastian Fischer sebf at
Wed Feb 10 04:40:34 EST 2010

On Feb 9, 2010, at 10:43 PM, S. Doaitse Swierstra wrote:

> -- but if we now unfold the definition of one we get a parser error  
> in GHC
> increment' = ( let x=1 in x  +  )
> The GHC and Hugs parsers are trying so hard to adhere to the meta  
> rule that bodies of let-expressions
> extend as far as possible when needed in order to avoid ambiguity,  
> that they even apply that rule when there is no ambiguity;
> here we have  only a single possible parse, i.e. interpreting the  
> offending expression as ((let x = 1 in ) +).

Despite the fact that there is a typo (second  x  is missing), I can  
think of two possible parses. Actually, my mental parser produced the  
second one:

     ((let x=1 in x)+)
     let x=1 in (x+)

The Haskell report may exclude my mental parse because operator  
sections need to be parenthesised.

Or are you arguing that in your example different possible parses have  
the same semantics for an arguably obvious reason and that this fact  
is relevant?


Underestimating the novelty of the future is a time-honored tradition.

More information about the Haskell-prime mailing list