On Mon, Oct 16, 2017 at 6:10 PM, Jonathan Hull <jh...@gbis.com> wrote:
> > On Oct 16, 2017, at 1:05 PM, Xiaodi Wu <xiaodi...@gmail.com> wrote: > > > On Mon, Oct 16, 2017 at 10:49 Jonathan Hull <jh...@gbis.com> wrote: > >> >> On Oct 16, 2017, at 7:20 AM, Xiaodi Wu <xiaodi...@gmail.com> wrote: >> >> To start with, the one you gave as an example at the beginning of this >>> discussion: Two sets with identical elements which have different internal >>> storage and thus give different orderings as sequences. You yourself have >>> argued that the confusion around this is enough of a problem that we need >>> to make a source-breaking change (renaming it) to warn people that the >>> results of the ‘elementsEqual’ algorithm are undefined for sets and >>> dictionaries. >>> >> >> No, I am arguing that the confusion about ‘elementsEqual’ is foremost a >> problem with its name; the result of this operation is not at all undefined >> for two sets but actually clearly defined: it returns true if two sets have >> the same elements in the same iteration order, which is a publicly >> observable behavior of sets (likewise dictionaries). >> >> >> But that iteration order is undefined and could easily change due to >> changes in the private/internal structure of sets/dictionaries. Algorithms >> that rely on that “publicly observable behavior” (i.e. leaking of >> internals) will suddenly break. >> > > And an algorithm in which such “sudden breakage” would occur is…? > > > Here are a few off the top of my head: > > func hasPrefix(Sequence)->Bool > func hasSuffix(Sequence)->Bool > func containsSubsequence(Sequence)->Bool > > What do these methods mean with regards to Set’s “publicly observable > behavior”? > In what way do these algorithms break? They would continue to determine--correctly--whether an instance of Set, when iterated, begins with, ends with, or contains (respectively) a subsequence that matches the argument.
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution