On Jan 18, 2012, at 2:09 AM, Brendan Eich wrote:
>   x = y
>   ^{z: w}

On Jan 18, 2012, at 9:05 AM, Oliver Hunt wrote:
> Alas ^ is syntactically ambiguous in the non-argument case:
> foo
> ^{...}

The ambiguity here doesn't seem particularly troubling. Under ASI this parses 
in a sensible fashion.
This seems unlikely to cause any confusion in real usage, since it only effects 
an object literal as an operand to a bitwise operator.

On the other hand, reuse of | seems somewhat more awkward. Based on the block 
lambda revival proposal, I believe:
        {|x = (a&b)| x}
        {|x = (a&&b)| x}
        {|x = a&b| x}
Are all valid block lambdas, but:
        {|x = a&&b| x}
Isn't.
Allowing an arbitrary subset of infix operators in initializer expressions 
seems an unfortunate wart, and potentially confusing to users of the language.

On Jan 18, 2012, at 2:09 AM, Brendan Eich wrote:
> 2. The TCP conformance makes anything like function (params) {body} an 
> anti-pattern. Changing function to ^ does not avoid this problem. We want 
> block-lambdas to look different from functions.
> 
> (2) is an overriding objection in my view.

That's a fair point.
For my tastes reusing | as delimiters to the parameter lists is a step too far 
away from function-like syntax, particularly if it restricts an arbitrary 
subset of infix operators from initializers.

I'd suggest changing the terminator for the parameter list to something other 
than | ...
        {|:  foo() }
        {|x,y:  foo(x,y) }
But I'd hate myself if I did. ;-)

G.

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to