<div dir="ltr">+1, I really like this. It would also align nicely with the method type flattening in <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0042-flatten-method-types.md">SE-0042</a> (once it gets implemented), because passing keypaths (i.e., unbound property references) and unbound parameterless method references to map/flatMap would look nearly the same:<br><div><br></div><div>```</div><div>struct Person {</div><div>  let firstName: String</div><div>  let lastName: String</div><div>  func fullName() -&gt; String { return &quot;\(firstName) \(lastName)&quot; }</div><div>}</div><div><br></div><div>let people: [Person]</div><div>let firstNames = people.map(\.firstName)</div><div>let fullNames = people.map(Person.fullName)  // because after SE-0042, this will be (Person) -&gt; String, not (Person) -&gt; () -&gt; String</div><div>```</div><div><br></div><div>Especially if there&#39;s a move in the future to also use \. to denote unbound methods references, which was discussed during the keypath reviews. (Even with that, I believe it would be more work though to get rid of the explicit type name in the function case.)</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 7, 2017 at 6:11 PM Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+1. Would think that all variants should exist on Optional too unless it would be harmful.<br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 7, 2017 at 20:13 Michael J LeHew Jr via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is a great idea, and ought to be easy enough to bring forward!  +1 from me!<br>
<br>
-Michael<br>
<br>
&gt; On Jun 7, 2017, at 11:18 AM, Matt Diephouse via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; 💯<br>
&gt;<br>
&gt;&gt; On Jun 7, 2017, at 10:35 AM, Adam Sharp via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; The new smart key path feature is really lovely, and feels like a great addition to Swift.<br>
&gt;&gt;<br>
&gt;&gt; It seems like it might be straightforward to add overloads of `map` and `flatMap` to the standard library to make use of the new functionality:<br>
&gt;&gt;<br>
&gt;&gt;      let managers = flatOrganisation.managers<br>
&gt;&gt;      let allEmployees = Set(managers.flatMap(\.directReports))<br>
&gt;&gt;      let employeeNames = Set(allEmployees.map(\.name))<br>
&gt;&gt;<br>
&gt;&gt; This feels like a really natural way of working with key paths in a functional style. It makes a lot of sense for collections, and possibly for Optional too (although as far as I can see optional chaining is more or less equivalent, and with more compact syntax).<br>
&gt;&gt;<br>
&gt;&gt; I’m hoping that this might be low-hanging fruit that could be considered for the Swift 4 release. I’d be happy to have a go at writing a proposal if there’s interest!<br>
&gt;&gt;<br>
&gt;&gt; –Adam<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-evolution mailing list<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>