> Am 17.10.2017 um 01:43 schrieb Xiaodi Wu via swift-evolution > <[email protected]>: > >> On Mon, Oct 16, 2017 at 6:10 PM, Jonathan Hull <[email protected]> wrote: >> >>> On Oct 16, 2017, at 1:05 PM, Xiaodi Wu <[email protected]> wrote: >>> >>> >>>> On Mon, Oct 16, 2017 at 10:49 Jonathan Hull <[email protected]> wrote: >>>> >>>>>> On Oct 16, 2017, at 7:20 AM, Xiaodi Wu <[email protected]> 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.
Why do you not answe the question, what these methods *mean* for a Set? Still waiting for a use case. -Thorsten > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
