<div dir="ltr">Personally, I'm a huge fan of this proposal. It would integrate into the language the extremely frequent idiom of defining a pick/pluck like function. There is ample prior art in the form of Ramda's <a href="https://ramdajs.com/docs/#pick">pick function</a>.as well as `pluck` in RxJS.<div><br></div><div>In fact, this exact proposal was at one point included in the proposal for "extended dot notation", then removed in the interests of making making it more digestible.</div><div><br></div><div>AFAICS the syntax is completely unambigious:</div><div><br></div><div>```</div><div>const pickName = .name; // equivalent to ({name}) => name</div><div>[{id: 1, name: "Bob"}, {id: 2, name: "Sally"}].map(pickName</div><div>```</div><div><br></div><div>The only objection I can think of is that the leading dot is sometimes hard to see. I would have suggested using the hash mark--in fact, an early version of the exptended dot notation proposal did propose that--but now that has been taken by the private fields proposal, so unless we want to go in the direction of keywords or magic operator sequences we are reduced to using non-unary operators such as ^, so</div><div><br></div><div>```</div><div><div>const pickName = ^name;</div><div>```<br></div><br class="gmail-Apple-interchange-newline"></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 21, 2019 at 9:47 AM Simon Farrugia <<a href="mailto:simonfarrugia26@gmail.com">simonfarrugia26@gmail.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"><div dir="ltr">New syntax will always look a bit odd at first until we get used to it.<div><br><div>I sometimes find nested arrow functions a bit confusing to understand where one function starts and where it ends particularly when they are one liners.</div><div>This syntax is more concise and personally I find it more readable.</div><div><br></div><div>Reasons for the leading dot notation is because I think it's intuitive and also self explanatory:</div><div>1) We just remove what is in common on both ends of the expression (like simplifying an algebraic expression).</div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">```</span></div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">const getEmail = </span><strike style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">user => user</strike><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">.contacts.email;</span></div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">```</span></div><div>2) The leading dot indicates that the expression reads the property of an object that is not statically defined.</div><div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">```</span></div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">const getEmail = </span><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">.contacts.email;</span></div><div><span style="background-color:transparent;color:inherit;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;white-space:pre-wrap">```<br></span></div></div></div></div>
_______________________________________________<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>