The real reason people need named arrow functions, the biggest use case is for event handlers.
```js let p = new Promise((resolve, reject) => setTimeout((x => () => x(x))(handler => { onNotNeeded(() => clearTimeout(handler)); // `return` is to take advantage of TCO return doSomethingAsync(err => { if (err != null) return reject(err) else return resolve(); }); })); ``` By the way, the way I created a self reference is a complete lambda calculus hack. <deviation> If you'd like your eyes to bleed, here's one that is purely out if lambdas. I couldn't help myself. ```js let p = new Promise((resolve, reject) => setTimeout((x => () => x(x))(h => x => y => y(x()))( onNotNeeded(() => clearTimeout(h)))( doSomethingAsync(e => if (err != null) return reject(err) else return resolve(); }); })); ``` On Tue, Aug 11, 2015, 20:45 Leonardo Wolter <leocwol...@gmail.com> wrote: > Well, I found out arguments is actually a reserved word too haha > > About that: > > 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. > > That could be it, right? Since it would be only available at arrow > functions(anon functions too?) > > 2015-08-11 21:42 GMT-03:00 Leonardo Wolter <leocwol...@gmail.com>: > >> Yeah., that's what I meant. >> >> My proposal is not a keyword, but an hidden variable included at >> functions (e.g. arguments). >> Does arrow functions have any limitations about that? >> >> 2015-08-11 21:35 GMT-03:00 Daniel Ehrenberg <dehrenb...@chromium.org>: >> >>> 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 <leocwol...@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 <dehrenb...@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 < >>> jacobparker1...@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@mozilla.org >>> >> > https://mail.mozilla.org/listinfo/es-discuss >>> >> _______________________________________________ >>> >> es-discuss mailing list >>> >> es-discuss@mozilla.org >>> >> https://mail.mozilla.org/listinfo/es-discuss >>> > >>> > >>> >> >> > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss