Named Arrow Functions

Daniel Ehrenberg dehrenberg at chromium.org
Wed Aug 12 00:35:32 UTC 2015


I assume you mean more like this (without factorial):

 x.map((x) => do {
        if (x <= 1) {
            1;
        } else {
            x * recur(x - 1)
        }
    });

One issue is that it's hard to add keywords to JavaScript at this
point. If they're not from the tiny set of remaining reserved words
(enum, anyone?), they can be users' identifiers, and have to be based
contextually on some enclosing syntax, like yield is.

Another downside is that then, arrow functions have a distinct and
less powerful method of recursing (e.g., nested functions won't be
able to see the binding to the outer one).

Dan

On Tue, Aug 11, 2015 at 5:30 PM, Leonardo Wolter <leocwolter at gmail.com> wrote:
> What about a clojure like recur hidden variable binded to the bottom-level
> function?
>
>  x.map(factorial(x) => do {
>         if (x <= 1) {
>             1;
>         } else {
>             x * recur(x - 1)
>         }
>     });
>
> 2015-08-11 21:26 GMT-03:00 Daniel Ehrenberg <dehrenberg at chromium.org>:
>>
>> In addition to being hard to parse in general, I don't think this
>> would play very well with the async/await proposal
>> https://tc39.github.io/ecmascript-asyncawait/ , which wants to have
>> arrow functions like
>>
>> async (x) => ...
>>
>> Because we can't count on async as a keyword, your proposal would
>> create an ambiguity.
>>
>> On Tue, Aug 11, 2015 at 1:49 PM, Jacob Parker <jacobparker1992 at gmail.com>
>> wrote:
>> > I did look, but couldn’t find anything on named arrow functions were not
>> > included. I do sometimes find cases where I want recursion inside a class
>> > function definition, and still need access to `this`. Was it just seen as
>> > syntax bloat, or were there any complications to implementing it?
>> >
>> > Obviously a contrived example, but something like this (using do syntax
>> > too)
>> >
>> >     x.map(factorial(x) => do {
>> >         if (x <= 1) {
>> >             1;
>> >         } else {
>> >             x * factorial(x - 1)
>> >         }
>> >     });
>> >
>> > _______________________________________________
>> > es-discuss mailing list
>> > es-discuss at mozilla.org
>> > https://mail.mozilla.org/listinfo/es-discuss
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>
>


More information about the es-discuss mailing list