Allen's lambda syntax proposal

David-Sarah Hopwood david.hopwood at industrial-designers.co.uk
Fri Dec 5 21:01:11 PST 2008


David-Sarah Hopwood wrote:
> Peter Michaux wrote:
>> The syntax ^(){} has a semicolon insertion ambiguity. What does the
>> following mean?
>>
>>   x = x
>>   ^(){}
> 
> It's not ambiguous; it would mean "x = x^(){}", which is (in this case)
> a syntax error.
> 
> '-' and '/' already have a similar issue of possibly unexpected
> parsing when they occur at the beginning of a line.

and '+', '++', '--', '(', and (for a different reason) 'function'.

Actually, the case of '(' is arguably worse than '^', because '('
at the start of an ExpressionStatement is very common:

  x = x
  (foo)

(parsed as 'x = x(foo);', but intended to be 'x = x; (foo);').

> Note that programmers who never deliberately rely on semicolon insertion
> will not be surprised by this example; they will consider writing
> "x = x" without an terminating semicolon to have been their mistake.

-- 
David-Sarah Hopwood


More information about the Es-discuss mailing list