Syntax Proposal: Anonymous Arguments

Rick Waldron waldron.rick at gmail.com
Fri Sep 23 20:42:46 UTC 2016


What does this mean:


let f = @;




On Fri, Sep 23, 2016 at 4:32 PM Jordan Harband <ljharb at gmail.com> wrote:

> @ is currently reserved for decorators, # currently for private fields.
> There aren't a lot of compelling syntax options left, to be sure.
>
> On Fri, Sep 23, 2016 at 11:35 AM, Kenneth Powers <ken at kenpowers.net>
> wrote:
>
>> What proposal is "@" reserved for, by chance? I was trying to pick
>> something that both wasn't used and can't be the name of a variable (e.g.,
>> underscore). I saw another proposal for "?" for partially applying
>> functions, but that would be potentially ambiguous with the ternary
>> operator.
>>
>> As for resolving ambiguity, why not just do what Scala does
>> <http://stackoverflow.com/questions/19916169/scala-arguments-of-nested-lambdas-with-short-syntax/19917720>?
>> It would seem to me that nesting these functions would be a sign you need
>> to refactor anyway.
>>
>> As far as meriting its own syntax, that's why I referenced another
>> language where the implementors found that it did merit its own syntax
>> (though the underscore in Scala also does a lot more).
>>
>> On Fri, Sep 23, 2016 at 2:00 PM, Jordan Harband <ljharb at gmail.com> wrote:
>>
>>> In Scala, the ambiguity of the underscore causes lots of confusion when
>>> you have nested functions - how is that handled in your proposal?
>>>
>>> Bear in mind, I think it's a tough argument that `@ + 1` is so much
>>> better than `n => n + 1` that it warrants its own syntax.
>>>
>>> Separately, the "@" is reserved for an existing proposal, so you'd have
>>> to come up with different syntax anyways.
>>>
>>> On Fri, Sep 23, 2016 at 10:38 AM, Kenneth Powers <ken at kenpowers.net>
>>> wrote:
>>>
>>>> I have a proposal for new syntax in ES inspired by the placeholder
>>>> syntax in Scala Functions
>>>> <http://docs.scala-lang.org/overviews/quasiquotes/expression-details.html#function>
>>>> .
>>>>
>>>> Essentially, the idea would be to allow anonymous arguments. The most
>>>> simple example would be a function which takes one argument (as far as the
>>>> programmer is concerned):
>>>>
>>>>     [1, 2, 3].map(@ + 1)
>>>>
>>>> This would be the same thing as:
>>>>
>>>>     [1, 2, 3].map(n => n + 1)
>>>>
>>>> Just like in Scala, an anonymous function is created. This concept can
>>>> be further extended in ES:
>>>>
>>>>     [1, 2, 3].reduce(@0 + @1, 0)
>>>>
>>>> Which would be the same thing as:
>>>>
>>>>    [1, 2, 3].reduce((sum, n) => sum + n, 0)
>>>>
>>>> Thoughts?
>>>>
>>>> _______________________________________________
>>>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20160923/d9b04d0b/attachment-0001.html>


More information about the es-discuss mailing list