<div dir="ltr">My initial reaction when this idea was floated was positive, but after Dave and others&#39; astute observations, I have come to the same opinion as him. Namely, it seems hard to justify adding an overload that&#39;s purely syntactic sugar, multiplying the number of ways to express the same thing, for a result where the increase in readability is debatable.<div><br></div><div>Agree also that _if_ this is worthwhile, then keypaths as a subtype of the corresponding function type would be the best way to go.<div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 5, 2017 at 4:23 PM, Dave Abrahams via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
on Wed Jul 05 2017, Benjamin Herzog &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
<br>
&gt; Hey guys,<br>
&gt;<br>
&gt; I would like to pitch a small convenient change to the Swift stdlib.<br>
&gt; With KeyPaths added in SE-0161 I would like to add some convenience<br>
&gt; calls to map, flatMap and filter in Sequences. To extract properties of<br>
&gt; an array of objects we currently use trailing closure syntax together<br>
&gt; with the shorthand $0 for the first closure argument. This is still kind<br>
</span>&gt; of verbose and also hard to read in some situations.I think it is much better to understand what is<br>
<span class="">&gt; going on when using the<br>
&gt; type safe KeyPaths for that. I already implemented a working solution<br>
&gt; and would like to pitch the idea here to get some feedback before<br>
</span>&gt; opening the swift evolution proposal.I propose using<br>
<span class="">&gt;<br>
&gt; persons.flatMap(keyPath: \.name)<br>
&gt;<br>
&gt; over<br>
&gt;<br>
&gt; persons.flatMap { $<a href="http://0.name" rel="noreferrer" target="_blank">0.name</a> }<br>
&gt;<br>
&gt; Link to pull request: <a href="https://github.com/apple/swift/pull/10760" rel="noreferrer" target="_blank">https://github.com/apple/<wbr>swift/pull/10760</a><br>
<br>
</span>Repeating my earlier response to this idea:<br>
<br>
I am not convinced this syntactic sugar is worth complicating the<br>
language or library for, but if it is, IMO the right thing is to make a<br>
keypath be-a subtype of the appropriate function type, rather than to<br>
start down the path of creating a keypath overload for every method that<br>
takes a closure argument.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
-Dave<br>
<br>
______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
</font></span></blockquote></div><br></div></div></div>