On Thu, Mar 30, 2017 at 9:25 AM Douglas Gregor via swift-evolution < [email protected]> wrote:
> Hello Swift community, > > The review of SE-0161 "Smart KeyPaths: Better Key-Value Coding for Swift" > begins now and runs through April 5, 2017. The proposal is available here: > > > https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md > > 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 > > <https://github.com/apple/swift-evolution/pulls#what-goes-into-a-review-1>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? > > +0.5. The concept is something the language very much needs, but please reconsider reverting to the lightweight syntax of the original proposal—IMO the version here is significantly worse in terms of legibility and discourages its use by being noisy. The fact that keypaths have their own nominal types that can be extended to introduce new behaviors makes it even more critical that they be easy and clean to use. If this becomes they way property behaviors are introduced into the language, the #keypath syntax simply won't fly. I too struggled with the lightweight syntax at first (unfortunately I didn't have the time to weigh in on the original version of the proposal, but I would have given it a +1 as originally written), but once I thought about it more, I realized like many others that it lined up perfectly with the syntax used for unbound method references. A "key path" is really just an unbound property reference that also happens to be able to navigate more deeply through the type graph. For that reason, it should use the same syntax that unbound function references use. I don't discount the argument that some have made that it's difficult to distinguish between keypaths and static property expressions. If that's the case, then the same problem *already exists* in Swift between unbound method references and static property expressions. If that is deemed to be a problem, we shouldn't fix it *only* for keypaths. Instead, keypaths should be recognized as what they are—unbound property references—and use the original syntax that aligned with unbound method references. *Then* we should consider alternative syntaxes that would fix the problem for *both* kinds of unbound references at once, in the same way. > > - Is the problem being addressed significant enough to warrant a > change to Swift? > > Yes. Being able to refer to properties in an abstract way fills a big hole in the language. > > - Does this proposal fit well with the feel and direction of Swift? > > Conceptually yes, but the #keypath syntax does not. It complicates what should be an easy-to-use feature. > > - If you have used other languages or libraries with a similar > feature, how do you feel that this proposal compares to those? > > Just Objective-C, whose notion of keypaths differs from what is trying to be done for Swift. > > - How much effort did you put into your review? A glance, a quick > reading, or an in-depth study? > > Followed the original discussions and first review thread. > 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 > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
