Why not use an equals Implementation that doesn't rely on order?

Something like this (which doesn't compile in my iPad playground). If two sets 
have the same number of elements, and every element in one can be found in the 
other, they are equal, otherwise they are not equal.

protocol Set  {
    static func == (lhs: Self, rhs: Self) {
    guard lhs.count == rhs.count else { return false }
    for x in lhs {
    if !rhs.contains(x) { return false }
    }
        return true
    }
}

--
C. Keith Ray

* https://leanpub.com/wepntk <- buy my book?
* http://www.thirdfoundationsw.com/keith_ray_resume_2014_long.pdf
* http://agilesolutionspace.blogspot.com/

> On Oct 15, 2017, at 12:40 PM, Kevin Nattinger via swift-evolution 
> <swift-evolution@swift.org> 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.
> 
> _______________________________________________
> 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

Reply via email to