<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br><br>Sent from my iPad</div><div><br>On Jul 1, 2016, at 7:03 PM, Dave Abrahams via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br><br></div><blockquote type="cite"><div><span></span><br><span>on Wed Jun 29 2016, Matthew Johnson <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:</span><br><span></span><br><blockquote type="cite"><span>Sent from my iPad</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span>On Jun 29, 2016, at 1:39 AM, Dave Abrahams via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>I've updated my pull request with a much more conservative set of</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>changes that preserves/restores label-free-ness for all “term of art”</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>functional methods such as filter and reduce.</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span><a href="https://github.com/apple/swift/pull/2981">https://github.com/apple/swift/pull/2981</a></span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>I didn't participate in this discussion but want to say that I am</span><br></blockquote><blockquote type="cite"><span>pleased with where it ended up. IMO this looks much better than the</span><br></blockquote><blockquote type="cite"><span>earlier version as well as some of the alternative that were</span><br></blockquote><blockquote type="cite"><span>discussed. I think brevity is important for the common functional</span><br></blockquote><blockquote type="cite"><span>operators and was previously concerned with the length of some of the</span><br></blockquote><blockquote type="cite"><span>names.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>My current thoughts are that many of the `by:` labels are awkward and</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>not adding much. Perhaps they all ought to be omitted.</span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Some cases are more awkward than others. The value added by a label</span><br></blockquote><blockquote type="cite"><span>is also greater in some cases than others. Unfortunately I think</span><br></blockquote><blockquote type="cite"><span>these tend to coincide.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>That said, I do think the value of a label outweighs the awkwardness</span><br></blockquote><blockquote type="cite"><span>in cases like min and max.</span><br></blockquote><span></span><br><span>? min and max are not under discussion here.</span><br></div></blockquote><div><br></div><div>Really? It looks like they're in your table:</div><div><br></div><div><table style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; margin-top: 0px; margin-bottom: 16px; display: block; width: 664px; overflow: auto; word-break: keep-all; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 14px; -webkit-text-size-adjust: 100%;"><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box; background-color: rgb(255, 255, 255); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);"><font color="#000000" face="UICTFontTextStyleTallBody"><span style="font-size: 17px; -webkit-text-size-adjust: none; background-color: rgba(255, 255, 255, 0);"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">smallest = shapes.min(</code><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;"> isOrderedBefore: haveIncreasingSize)</code></span></font></td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);"><font color="#000000" face="UICTFontTextStyleTallBody" size="3"><span style="-webkit-text-size-adjust: none; background-color: rgba(255, 255, 255, 0);"><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">smallest = shapes.min(</code><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;"> by: haveIncreasingSize)</code></span></font></td></tr><tr style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);"><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);"><font color="#000000" face="UICTFontTextStyleTallBody" size="3"><span style="-webkit-text-size-adjust: none; background-color: rgba(255, 255, 255, 0);"><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">largest = shapes.max(</code><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;"> isOrderedBefore: haveIncreasingSize)</code></span></font></td><td style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);"><font color="#000000" face="UICTFontTextStyleTallBody" size="3"><span style="-webkit-text-size-adjust: none; background-color: rgba(255, 255, 255, 0);"><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">largest = shapes.max(</code><br style="box-sizing: border-box;"><code style="box-sizing: border-box; padding: 0.2em 0px; margin: 0px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;"> by: haveIncreasingSize)</code></span></font></td></tr></tbody></table></div><br><blockquote type="cite"><div><span></span><br><blockquote type="cite"><span>One change you might consider is to use different labels for</span><br></blockquote><blockquote type="cite"><span>comparison and equivalence relations. 'by' feels more natural in the</span><br></blockquote><blockquote type="cite"><span>context of comparisons and brevity feels more important in the methods</span><br></blockquote><blockquote type="cite"><span>that use a comparator. On the other hand, I think dropping the use of</span><br></blockquote><blockquote type="cite"><span>the word equivalent for 'starts' and 'elementsEqual' feels like a step</span><br></blockquote><blockquote type="cite"><span>back in clarity. Maybe we use 'equivalentBy' in these cases.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>A suggestion for the future enhancements - rename elementsEqual to</span><br></blockquote><blockquote type="cite"><span>elementsEquivalent. If we make that change the shorter 'by' label</span><br></blockquote><blockquote type="cite"><span>would feel much less awkward to me in this method.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>-Matthew</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>-- </span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>Dave</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>_______________________________________________</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>swift-evolution mailing list</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>_______________________________________________</span><br></blockquote><blockquote type="cite"><span>swift-evolution mailing list</span><br></blockquote><blockquote type="cite"><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br></blockquote><blockquote type="cite"><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></blockquote><span></span><br><span>-- </span><br><span>Dave</span><br><span></span><br><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></body></html>