>>> myfunc(param1, param2) -> { ... } // lexical this
>>> var obj = {
>>>   mymethod: (this, param1, param2) -> { ... } // dynamic this
>>> }
>> 
>> This is how Python handles methods. I think there were objections to this 
>> approach, but unfortunately I can neither remember them nor find them online.
> 
> No, this was still a possibility and I almost wrote it up at 
> http://wiki.ecmascript.org/doku.php?id=strawman:arrow_function_syntax -- but 
> with (this) -> .... That was just gratuitously overlong and incompatible with 
> CoffeeScript.
> 
> There's no arguing with the objection that => feels to close to -> and 
> lexical-this is a major change deserving more significant syntactic 
> differentiation. It's plausible, but if users often need the heavier syntax, 
> they'll waste keystrokes and brain cells on it and curse us for not getting 
> the "right default".
> 
> Usability is hard. I've seen zero evidence that CoffeeScript's fat-arrow is 
> unusably terse and people are fooled into thinking it's as cheap as -> (if 
> that's the concern). What is the problem?


I’m not emotionally invested in the explicit |this|. I know it from Python and 
Lua and like it there. It is also a nice visualization of the "shadowing" of 
|this|, in a way that should be easier to understand for newcomers.

On the other hand, CoffeeScript compatibility and terseness *are* valid 
arguments. Typing |this| for each method will be repetitive.

BTW: I find that the infix -> works well for object literals, where a prefix 
operator unnecessarily separates the method name from the parameter list.

To sum up: I don't lean either way, both solutions have pros and cons. Any 
solution that makes function expressions shorter is fine with me.


Another question: I find it conceptually clearer to distinguish between methods 
and functions, instead of between functions and functions with bound |this|. 
Wouldn’t it be better to use "->" for functions ("lighter", no |this| except 
for lexical access to |this|) and "=>" for methods ("heavier", |this| as an 
implicit parameter). Or does that deviate too much from current ES semantics?

Axel

-- 
Dr. Axel Rauschmayer

[email protected]
twitter.com/rauschma

home: rauschma.de
blog: 2ality.com



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

Reply via email to