Unbound arrow functions?

# Isiah Meadows (9 years ago)

There already exists a syntax for lexically bound functions, but couldn't there be an unbound counterpart? I am aware I brought this up before, but I'm still missing it with smaller methods that still need this. It's easy to macro, but it feels weird to have a lexically bound lambda and not an unbound equivalent to the anonymous function expression.

<aside class="biased">

Also, it's the only reason CoffeeScript still seems attractive in any way. I know I'm a little opinionated in this area, but I'd rather use ES 2015 to CoffeeScript any day. </aside>

# Erik Arvidsson (9 years ago)

ES'15 provides dedicated method syntax. What are your use cases that are not covered by methods?

# Herby Vojčík (9 years ago)

Dňa 20. júna 2015 19:31:18 CEST používateľ Erik Arvidsson <erik.arvidsson at gmail.com> napísal:

ES'15 provides dedicated method syntax. What are your use cases that are not covered by methods?

Or, ultimately, by function keyword. If I understand correctly, what you want is "arrowlike" equivalent of what function keyword already provides. If it is not the case, just ignore the rest. If it is, the state is, IIRC, that this went through the discussion some year ago and the consensus was, no shorter form of function should be added just for convenience - only the lexically bound one as it actually brings actual added value.

# Isiah Meadows (9 years ago)

Good point. I just wish there was some shorter form for methods, but I guess that's probably a little more for Sweet.js macros than this.

# Erik Arvidsson (9 years ago)

At one point in time we allowed concise bodies in classes and object literals but the commas in object literals made the syntax problematic.

# Allen Wirfs-Brock (9 years ago)

On Jun 21, 2015, at 7:42 AM, Erik Arvidsson wrote:

At one point in time we allowed concise bodies in classes and object literals but the commas in object literals made the syntax problematic.

We also talked about the possibility of allow ; as an alternate separator in object literals. But it didn't find much traction.

# Andy Earnshaw (9 years ago)

The thing I liked about thin arrows (other than the conciseness) was the lack of a prototype object, thus automatically throwing on construct and having similar behaviour to native functions. Concise methods and fat arrows already have this behaviour, but if you want to add such a method to an already existing object you have to resort to using Object.assign (or have a function with a prototype that is made to throw on construct).

Of course, if we made .prototype configurable for non-builtins we could always delete to get the same behaviour. Not sure how viable that is, or if it's worth it for such a minor convenience.