[swift-evolution] [Pitch] KeyPath based map, flatMap, filter

Brent Royal-Gordon brent at architechies.com
Thu Jul 6 01:00:00 CDT 2017


> On Jul 5, 2017, at 2:23 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I am not convinced this syntactic sugar is worth complicating the
> language or library for,

For what it's worth, I think it is *totally* worth complicating the language or library. The manual alternative involves a ton of obfuscating code and punctuation:

	person.map { $0[keyPath: myKeyPath] }	// Don't tell me this isn't horrible.

> but if it is, IMO the right thing is to make a
> keypath be-a subtype of the appropriate function type, rather than to
> start down the path of creating a keypath overload for every method that
> takes a closure argument.

However, I think making `KeyPath<Foo, Bar>` a subtype of `(Foo) -> Bar` is a great way of handling this whole problem in one fell swoop—as long as it doesn't get delayed three or four versions while we clean up the type system.

-- 
Brent Royal-Gordon
Architechies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170705/93429f2f/attachment.html>


More information about the swift-evolution mailing list