>> If Ruby-style magic isn’t an option then I would expect (and prefer) that 
>> there were only two calling “modes”:
>> 
>> - Traditional: myfunc(arg1, arg2, ...}
>> - Paren-free – lambdas only: myfunc {|| body1} {|| body2} ...
> 
> The objection (if you read the whole thread containing the message I cited, I 
> think you'll find it) was that requiring *only* block-lambdas for the 
> paren-free call form means expression arguments, even ones as simple as 
> numeric literals, must be bracketed by {|| and }. Why not allow ( and ) 
> instead?
> 
> (*) One counter-argument is that this looks the argument list of a call 
> expression whose callee is everything to the left. But paren-free call syntax 
> supports newline termination, so I added the ... ( Initial Value ) production 
> to satisfy setTimeout-like use cases without requiring {|| and | as brackets.
> 
> If this alternate production bites back in some way, or is simply under-used 
> or too surprising, I'll yank it.

Three arguments in favor of yanking:

- Thanks to lambdas, setTimeout already looks very nice – even as a 
parenthesized function call.

- Putting callable values last is more likely, the grammar rule introduces an 
odd asymmetry, by not allowing leading a leading ( InitialValue ) . I’m not 
saying that that would be a desirable feature (currying is fine here), just 
that trailing non-lambdas seem much rarer than leading non-lambdas.

- The counter-argument (*) you mention above weighs heavily. Most people 
(certainly me) probably expect a function or method call when they see a 
parenthesized value.

The following seems like an elegant and easy to understand rule to me:
    “The parameters of a function or method call are either parenthesized or 
paren-free. In the latter case, all parameters must be lambdas.”

-- 
Dr. Axel Rauschmayer
a...@rauschma.de

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to