S. Doaitse Swierstra
doaitse at cs.uu.nl
Wed Feb 10 07:25:41 EST 2010
On 10 feb 2010, at 10:40, Sebastian Fischer wrote:
> 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.
Indeed, but it is not "may exclude", but "excludes".
> 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