<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;"><font color="#6a737d" face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol" size="3" class=""><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md</a></font></div></div></div></blockquote><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><ul class="" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><li class="" style="box-sizing: border-box;">What is your evaluation of the proposal?</li></ul></div></div></blockquote><div>+1 in general </div><div><br class=""></div><div>BUT I absolutely dislike having to escape a key path with `\` which is absolutely counterintuitive IMHO.</div><div>Like Brent already wrote, the `\` has to encompass the full expression to avoid ambiguities; this is so foreign to how `\` usually works, i.e. only on the following character, that it further makes the syntax counterintuitive and ugly.</div><div><br class=""></div><div>I would have preferred one of these</div><div><br class=""></div><div>1.</div><div>@{Type.property[.property]*}</div><div><span style="font-family: Monaco;" class=""> // no ambiguities due to braces</span></div><div class=""><div><font face="Monaco" class=""> let kp = @{Person.bestFriend?.name}</font></div></div><div class=""><div><font face="Monaco" class=""> luke[keyPath: @{.bestFriend?.name}]</font></div></div><div><font face="Monaco" class=""><br class=""></font></div><div></div><div>2.</div><div>@Type.property[.property]*</div><div><span style="font-family: Monaco;" class=""> // </span><span style="font-family: Monaco;" class="">@ applies to whole expression to make unambiguous (just like Brent suggested for `\`)</span></div><div class=""><div><font face="Monaco" class=""> let kp = @Person.bestFriend?.name</font></div></div><div class=""><div><font face="Monaco" class=""> luke[keyPath: @.bestFriend?.name]</font></div></div><div><font face="Monaco" class=""><br class=""></font></div><div></div><div>3.</div><div><div>Type@property[.property]*</div><div class=""><span style="font-family: Monaco;" class=""> // @ applies to whole expression to make unambiguous (just like Brent suggested for `\`)</span></div></div><div><font face="Monaco" class=""> </font><span style="font-family: Monaco;" class="">let kp =</span><span style="font-family: Monaco;" class=""> </span><span style="font-family: Monaco;" class="">Person@bestFriend?.name</span><span class="Apple-tab-span" style="font-family: Monaco; white-space: pre;">                </span></div><div><div class=""><div><span style="font-family: Monaco;" class=""> luke[keyPath: @bestFriend?.name]</span></div></div><div></div></div><div><div><br class=""></div><div>4.</div><div>Type@property[@property]*</div><div class=""><span style="font-family: Monaco;" class=""> // no ambiguities due to different separators; might be used for method references as well</span></div></div><div><font face="Monaco" class=""> </font><span style="font-family: Monaco;" class="">let kp =</span><span style="font-family: Monaco;" class=""> </span><span style="font-family: Monaco;" class="">Person@bestFriend?@name</span></div><div class=""><div><span style="font-family: Monaco;" class=""> luke[keyPath: @bestFriend?@name]</span></div></div><div><div></div></div><div><br class=""></div><div><div>5.</div><div>#keyPath(Type.property[.property]*)</div><div><span style="font-family: Monaco;" class=""> // no ambiguities due to parenthesis</span></div></div><div><font face="Monaco" class=""> </font><span style="font-family: Monaco;" class="">let kp =</span><span style="font-family: Monaco;" class=""> </span><span style="font-family: Monaco;" class="">#keyPath(Person.bestFriend?.name)</span></div><div><span style="font-family: Monaco;" class=""> luke[keyPath: #keyPath(.bestFriend?.name)]</span></div><div><div><div><div><div><br class=""></div></div></div><div class=""><br class=""></div></div></div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><ul class="" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><li class="" style="box-sizing: border-box; margin-top: 0.25em;">Is the problem being addressed significant enough to warrant a change to Swift?</li></ul></div></div></blockquote><div><br class=""></div>Yes, definitely!</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><ul class="" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><li class="" style="box-sizing: border-box; margin-top: 0.25em;">Does this proposal fit well with the feel and direction of Swift?</li></ul></div></div></blockquote><div><br class=""></div>Yes.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><ul class="" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><li class="" style="box-sizing: border-box; margin-top: 0.25em;">If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</li></ul></div></div></blockquote><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><ul class="" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><li class="" style="box-sizing: border-box; margin-top: 0.25em;">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</li></ul></div></div></blockquote><div><br class=""></div>Followed much of the discussion, read the proposal.</div><div><br class=""></div><div>-Thorsten</div><div><br class=""></div></body></html>