<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></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=""><ul 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);" class=""><li style="box-sizing: border-box;" class="">What is your evaluation of the proposal?</li></ul></div></div></blockquote><div>I am very excited about the usefulness of this proposal right now and about its potential in the future. This is big step towards enabling a lot of “dynamic” features.</div><div><br class=""></div><div>But, like Brent, I continue to think that the syntax is much too heavy: I was a big fan of the original version of the proposal. If we take the code Brent wrote in this thread:</div><div><br class=""></div><div><div class=""><font face="Menlo" class="">let isPuppyQualifier = #keyPath(Pet, .type) == .dog &amp;&amp; #keyPath(Pet, .age) &lt; 12</font></div><div class=""><font face="Menlo" class="">let familyQualifier = #keyPath(Family, .pets).contains(where: isPuppyQualifier)</font></div><div class=""><font face="Menlo" class="">let familiesWithPuppies = Family.fetch(editingContext, familyQualifier)</font></div><div class=""><br class=""></div><div class="">We can see that it’s much less readable than if written with the original proposal:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Menlo" class="">let isPuppyQualifier = Pet.type == .dog &amp;&amp; Pet.age &lt; 12</font></div><div class=""><font face="Menlo" class="">let familyQualifier = Family.pets.contains(where: isPuppyQualifier)</font></div><div class=""><font face="Menlo" class="">let familiesWithPuppies = Family.fetch(editingContext, familyQualifier)</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Times New Roman" class="">Or with any other similar alternative:</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><div class=""><font face="Menlo" class="">let isPuppyQualifier = Pet::type == .dog &amp;&amp; Pet::age &lt; 12</font></div><div class=""><font face="Menlo" class="">let familyQualifier = Family::pets.contains(where: isPuppyQualifier)</font></div><div class=""><font face="Menlo" class="">let familiesWithPuppies = Family.fetch(editingContext, familyQualifier)</font></div></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class="">I&nbsp;would strongly suggest that the core team reconsider the syntax in the latest version of the proposal and revert to the original form or something similar. Even if the original syntax is chosen, the ambiguity issues that existed in that version is only a small price to pay next to the improvement in&nbsp;readability this popular feature will gain.</div></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 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);" class=""><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Is the problem being addressed significant enough to warrant a change to Swift?</li></ul></div></div></blockquote><div>Yes, very much.</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 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);" class=""><li style="box-sizing: border-box; margin-top: 0.25em;" class="">Does this proposal fit well with the feel and direction of Swift?</li></ul></div></div></blockquote><div>It does.</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 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);" class=""><li style="box-sizing: border-box; margin-top: 0.25em;" class="">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>I have used key-paths in Objective-C, but this feature is more similar to lenses than to Objective-C’s key-paths. I have not used lenses in another language.</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 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);" class=""><li style="box-sizing: border-box; margin-top: 0.25em;" class="">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</li></ul></div></div></blockquote>An in depth-study.</div></body></html>