<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="">On Apr 25, 2017, at 11:32 AM, Ted Kremenek via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><ul class="" style="font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; -webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: -apple-system-body, Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);"><li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">What is your evaluation of the proposal?</li></ul></div></blockquote><div><div>I agree that this method should be added, but I would suggest naming it differently.</div><div><br class=""></div><div>Collection parameters have to be very carefully labeled because there are so many different associated types and they are often generic. For instance, an `Array&lt;Int&gt;` will have the same type for `Element`, `Index`, and `IndexDistance`. In the case of `swap`, one might misunderstand the call and believe the parameters are elements or counts, rather than indices.</div><div><br class=""></div><div>The simplest solution would be to change it to:</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>elements.swap(at: lo, with: hi)</div><div><br class=""></div><div>However, you can also make an argument for:</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>elements.swapAt(lo, hi)</div><div><br class=""></div><div>This style is relatively rare, but is endorsed by the API Guidelines when the preposition applies to all of the arguments collectively.</div><div><br class=""></div><div>Actually, we might want to consider extending the semantics of this method to:</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>mutating&nbsp;func swapAt(_ indices: Index...)</div><div><br class=""></div><div>The method would move `indices[0]` to `indices[1]`, `indices[1]`, to `indices[2]`, etc., finally moving `indices.last!` to `indices[0]`. This would do the same thing as the proposed method when there were two indices, but would provide other useful behaviors when there were more than two.</div></div><blockquote type="cite" class=""><div class=""><ul class="" style="font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; -webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: -apple-system-body, Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);"><li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">Is the problem being addressed significant enough to warrant a change to Swift?</li></ul></div></blockquote>Yes. Tightening the rules around simultaneous access is necessary, and this is a good way to do that.<br class=""><blockquote type="cite" class=""><div class=""><ul class="" style="font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; -webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: -apple-system-body, Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);"><li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">Does this proposal fit well with the feel and direction of Swift?</li></ul></div></blockquote>Yes.<br class=""><blockquote type="cite" class=""><div class=""><ul class="" style="font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; -webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: -apple-system-body, Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);"><li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">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></blockquote>I actually prefer Foundation's use of `exchange` to `swap`, which feels less jargon-y to me, but `swap` has precedent in the standard library.<br class=""><blockquote type="cite" class=""><div class=""><ul class="" style="font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; -webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: -apple-system-body, Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);"><li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</li></ul></div></blockquote></div><div class="">Just a quick reading.</div><br class=""><div class="">
<span class="Apple-style-span" style="border-collapse: separate; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; line-height: normal; border-spacing: 0px;"><div class=""><div style="font-size: 12px; " class="">--&nbsp;</div><div style="font-size: 12px; " class="">Brent Royal-Gordon</div><div style="font-size: 12px; " class="">Architechies</div></div></span>

</div>
<br class=""></body></html>