[swift-evolution] [Draft] Rename Sequence.elementsEqual

Thorsten Seitz tseitz42 at icloud.com
Sun Oct 15 23:59:58 CDT 2017

> Am 16.10.2017 um 00:46 schrieb Xiaodi Wu <xiaodi.wu at gmail.com>:
> On Sun, Oct 15, 2017 at 2:39 PM, Kevin Nattinger <swift at nattinger.net> wrote:
>>> […]
>>> Swift's Sequence protocol does not require the order of iteration to "convey any meaning"; it doesn't even require it to be deterministic.
>> And that’s EXACTLY why none of the functions on Sequence should rely on the order conveying meaning.  `ElementsEqual` (for example) DOES rely on the order of iteration conveying a meaning not required by the protocol, and renaming it `lexicographicallyEquals` does not change that fact. Either Sequence needs to require a meaningful order or `elementsEqual` should be moved to a protocol that does.
> What's your basis for saying that `elementsEqual` requires orders of iteration that "convey a meaning"? It merely answers the question of whether iterating over `a` is substitutable for iterating over `b`, a question applicable to instances of any type which offers iterated access.

As Set has no intrinsic order of elements just imagine it was implemented to have each iterator created on it to iterate in a random order. This would satisfy the Sequence protocol (or rather its Iterable part hich should be split off) and clearly show that the order is meaningless for Sets.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171016/6be043e8/attachment.html>

More information about the swift-evolution mailing list