<div dir="ltr">At the cost of adding more code, but giving more power, perhaps what we want is something akin to Kotlin's `it` keyword:<br><a href="https://kotlinlang.org/docs/reference/lambdas.html?_ga=2.238822404.500195435.1575368476-1345353619.1575368476#it-implicit-name-of-a-single-parameter">https://kotlinlang.org/docs/reference/lambdas.html?_ga=2.238822404.500195435.1575368476-1345353619.1575368476#it-implicit-name-of-a-single-parameter</a><br><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><i>it: implicit name of a single parameter</i><br><i>It's very common that a lambda expression has only one parameter.</i><br><i>If the compiler can figure the signature out itself, it is allowed not to declare the only parameter and omit ->. The parameter will be implicitly declared under the name it:</i><br><font face="monospace" style="">ints.filter { it > 0 } // this literal is of type '(it: Int) -> Boolean'<br><br><br></font></blockquote><div>What we'd want is something concise and non-ambiguous to fulfill the same role; something that cannot currently be a valid identifier, maybe. This is the point where I start scanning the keyboard for underutilised symbols... I'm thinking the hash symbol would work. To re-use the original example:<br><br>```js<br>const activeProducts = products.filter(#.active);<br>const productNames = products.map(#.name);<br>const sortedProducts = _.sortBy(products, #.name);<br>const { true: activeProducts, false: inactiveProducts } = _.groupBy(products, #.active);<br>```</div><div><br></div><div>It makes intuitive sense in 2 ways, I think; # makes you think of the object hash you're extracting a property from, and also is familiar as something's id from CSS selectors.<br><br>We could also extend it to represent multiple parameters: # is also aliased as #0, the 2nd parameter is #1, etc.</div><div><br></div><div>Further, dynamic properties would work too: `const fooProducts = products.filter(#[foo]);<br><div class="gmail_signature" data-smartmail="gmail_signature"><i>-</i>-------------------------<br>Dammit babies, you've got to be kind.</div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 2 Dec 2019 at 22:32, Waldemar Horwat <<a href="mailto:waldemar@google.com">waldemar@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 11/24/19 9:17 PM, Bob Myers wrote:<br>
> FWIW, the syntax `.propName` does appear to be syntactically unambiguous.<br>
<br>
It conflicts with contextual keywords such as `new . target`.<br>
<br>
¬† ¬† ¬†Waldemar<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>