> Am 17.10.2017 um 14:46 schrieb Xiaodi Wu <xiaodi...@gmail.com>: > >> On Tue, Oct 17, 2017 at 01:03 Thorsten Seitz <tseit...@icloud.com> wrote: >> >> >>> Am 17.10.2017 um 01:43 schrieb Xiaodi Wu via swift-evolution >>> <swift-evolution@swift.org>: >>> >>>> 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. >> >> Why do you not answe the question, what these methods *mean* for a Set? >> Still waiting for a use case. > > The method means exactly what I just said: the iteration order of one set > matches the iteration order of another sequence. I’ve given you one use case > and others have given more.
Sorry, the use case you gave was just a clever trick instead of using `contains` and Float.isNaN. No one else has provided a use case for `elementsEqual` yet. -Thorsten > >> >> -Thorsten >> >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution