Allen's lambda syntax proposal
David-Sarah Hopwood
david.hopwood at industrial-designers.co.uk
Thu Dec 4 12:23:40 PST 2008
Jon Zeppieri wrote:
> 2008/12/3 P T Withington <ptw at pobox.com>:
>> - prefix ^ might be confused with the infix operator of the same name
>
> With semicolon insertion, isn't this a bigger problem?
>
> The opening brace will need to be on the same line as the formals,
> otherwise the syntax is ambiguous:
>
> ^(x) {
> x = x * x
> ^(a,b,c,d,e,f,g)
> {
> x
> }
> }
Strictly speaking, the syntax is not ambiguous; it just is not parsed
how you might expect. The semicolons would be inserted in this example
as follows:
^(x) {
x = (x * x)^(a, b, c, d, e, f, g);
{ x; }
};
Arguably, the problem here is that semicolon insertion is and always
was a bad idea.
> And, if it is on the same line, it's still bad for a top-down parser:
>
> ^(x) {
> x = x * x
> ^(a,b,c,d,e,f,g) {x}
> }
Same result as above.
> Will semicolon insertion be illegal inside a lambda body?
That's worth considering. It does not prevent lambdas from being used
to desugar other constructs, because semicolon insertion would be
performed on the original program before desugaring.
--
David-Sarah Hopwood
More information about the Es-discuss
mailing list