<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 17, 2017 at 10:25 PM, Michael Ilseman <span dir="ltr">&lt;<a href="mailto:milseman@apple.com" target="_blank">milseman@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div><span class=""><br><blockquote type="cite"><div>On Oct 17, 2017, at 12:54 PM, Benjamin G &lt;<a href="mailto:benjamin.garrigues@gmail.com" target="_blank">benjamin.garrigues@gmail.com</a>&gt; wrote:</div><br class="m_1049180946288009868Apple-interchange-newline"><div><div dir="ltr">Thanks for the post, that&#39;s the first clear explanation i see on this thread for the concepts behind the design for Sequence.<div><br></div><div>I am a bit afraid that understanding all that is a bit above what to expect the average swift developer will guess when he sees functions like &quot;prefix / first / elementEqual (or whatever it&#39;s called)&quot; on the Set type.</div><div>There is, IMHO, a much higher chance he&#39;ll either : </div><div>1/ not understand anything, or </div><div>2/ think Sets are in fact secretely ordered sets, or start writing generic extensions above Sequence or Collection thinking those protocols are synonymous for orderer collections.<br><div><br></div><div>1/ is pretty harmless, but 2/ seems like a source of bug.</div><div><br></div><div>My personal opinion after reading all this is that we should simply change the name</div></div></div></div></blockquote><div><br></div></span><div>Exactly, and that’s what Xiaodi’s proposal does. Confronted with these complexities, his proposal reasons that a name change is the lessor or evils, as in the “Proposed solution” section.</div><div><br></div><blockquote type="cite"><div><div dir="ltr"><div><div> to sequentiallyEquals</div></div></div></div></blockquote><div><br></div><div><div>Xiaodi floated “lexicographicallyEqual” which is accurate and a big improvement, and I’m liking it more and more. I floated “sequentiallyEquals”, which I’m liking less and less now. My current preference is for “elementsOrderedEqual” which I think is more descriptive but unwieldy. On the other hand, this is a far less common facility, and order matters, so maybe more verbose names are fine.</div></div></div></div></blockquote><div><br></div><div>I&#39;m sorry to bring more bikeshedding, but lexicographicallyEqual seems absolutely atrocious to me. Imagine all the steps required the user of a Set&lt;Int&gt; to understand why a lexicographicallyEqual function is suggested by the compiler ??</div><div><br></div><div>Since you seem to give the kind of answer i&#39;m looking for, do you have any answer to a previous question i asked regarding the rational for conflating the iterator with the collection ?</div><div>What i mean by that is : i think nobody would have cared if the syntax for Set was actually</div><div>set1.iterator.elementEquals(set2.iterator)</div><div>It&#39;s a bit more verbose, but the meaning is obvious.</div><div>I think a reason why people are confused is that the actual design conflates methods of the &quot;iterator&quot; on the collection type itself. An alternate design would have been to make collection Sequence<i style="font-weight:bold">able </i>rather than a sequence themselves. But i suppose you&#39;ve thought about that already, so i&#39;m just curious to know what made you choose the current solution instead.</div><div><br></div><div><br></div></div></div></div>