> On Apr 7, 2017, at 12:27 AM, Rick Mann <rm...@latencyzero.com> wrote: >> On Apr 6, 2017, at 20:37 , John McCall <rjmcc...@apple.com> wrote: >> >>> On Apr 6, 2017, at 9:28 PM, Rick Mann via swift-evolution >>> <swift-evolution@swift.org> wrote: >>> I tend to dislike the backslash as well, but can't suggest a good >>> alternative. >>> >>> Does any of this allow for operations within the key path? e.g. >>> Department.employees.@sum.salary? >> >> You can express things like this in the feature as proposed using subscripts: >> >> extension Collection { >> subscript<T: Integer>(summing path: KeyPath<Element, T>) -> T { >> var sum: T = 0 >> for let elt in self { >> sum += elt[keyPath: path] >> } >> return sum >> } >> } > > I'm just remembering how AppKit/Cocoa lets you do things like this in a very > expressive way. Your proposal seems a bit cumbersome. Maybe when we have > custom annotations, they can be extended to use within key paths.
I'm not seriously endorsing this exact spelling. It would be much better to be able to write something like: \Department.employees.sum(of: \.salary) However, since "sum" would presumably be a method on Collection, I think this would have to be a future extension to the proposal, and the overall thing might have to be a function rather than a key path because it would no longer have identity. Also, I do feel obliged to note that AppKit/Cocoa's "very expressive" way of doing this is a small number of hard-coded operators, whereas even the kindof-unfortunate subscript trick would be arbitrarily extensible. John. > > Thanks. > >> >> ... >> >> \Department.employees[summing: \.salary] >> >> That's not actually a good name for the subscript, but maybe there's one out >> there. >> >> John. >> >>> >>> Also, in this example: >>> >>> let firstFriendsNameKeyPath = \Person.friends[0].name >>> let firstFriend = luke[keyPath: firstFriendsNameKeyPath] // "Han Solo" >>> >>> Can't we do without the keyPath: argument name? The compiler knows it's a >>> keypath, it would be nicer to write >>> >>> let firstFriend = luke[firstFriendsNameKeyPath] // "Han Solo" >>> >>>> On Apr 5, 2017, at 16:56 , Douglas Gregor via swift-evolution >>>> <swift-evolution@swift.org> wrote: >>>> >>>> Hello Swift community, >>>> >>>> The second review of SE-0161 "Smart KeyPaths: Better Key-Value Coding for >>>> Swift" begins now and runs through April 9, 2017. The revised proposal is >>>> available here: >>>> >>>> https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md >>>> The core team’s feedback from the first review of this proposal can be >>>> viewed at: >>>> >>>> https://lists.swift.org/pipermail/swift-evolution-announce/2017-April/000342.html >>>> Reviews are an important part of the Swift evolution process. All reviews >>>> should be sent to the swift-evolution mailing list at >>>> >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>>> or, if you would like to keep your feedback private, directly to the >>>> review manager. When replying, please try to keep the proposal link at the >>>> top of the message: >>>> >>>> Proposal link: >>>> >>>> https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md >>>> Reply text >>>> Other replies >>>> What goes into a review? >>>> >>>> The goal of the review process is to improve the proposal under review >>>> through constructive criticism and, eventually, determine the direction of >>>> Swift. When writing your review, here are some questions you might want to >>>> answer in your review: >>>> >>>> • What is your evaluation of the proposal? >>>> • Is the problem being addressed significant enough to warrant a change >>>> to Swift? >>>> • Does this proposal fit well with the feel and direction of Swift? >>>> • If you have used other languages or libraries with a similar feature, >>>> how do you feel that this proposal compares to those? >>>> • How much effort did you put into your review? A glance, a quick >>>> reading, or an in-depth study? >>>> More information about the Swift evolution process is available at >>>> >>>> https://github.com/apple/swift-evolution/blob/master/process.md >>>> Thank you, >>>> >>>> -Doug >>>> >>>> Review Manager >>>> >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> swift-evolution@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >>> >>> -- >>> Rick Mann >>> rm...@latencyzero.com >>> >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-evolution > > > -- > Rick Mann > rm...@latencyzero.com > > _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution