> On Nov 2, 2017, at 4:22 PM, Xiaodi Wu via swift-dev <swift-dev@swift.org> > wrote: > > On Thu, Nov 2, 2017 at 5:22 PM, Matthew Johnson <matt...@anandabits.com > <mailto:matt...@anandabits.com>> wrote: > >> On Nov 2, 2017, at 5:20 PM, Jonathan Hull via swift-dev <swift-dev@swift.org >> <mailto:swift-dev@swift.org>> wrote: >> >> It looks like we have a good solution. Per Steve and David’s suggestions: >> >> 1) Make FloatingPoint == reflexive >> >> 2) Add &== to FloatingPoint for those who specifically want IEEE behavior >> >> 3) Add a warning + fixit to ‘a != a’ >> >> We should take this to evolution… > > Looks like a winner to me. > > Again, there remain several problems with this design. In the concrete > context, the syntax `&==` suggests that it is a compatibility, legacy, or > specialized function not to be preferred over `==`. This makes Swift deviate > from every other programming language, creating a new footgun for experienced > developers, and encourages a performance hit where one is not demonstrably > necessary (most operations that ask about UI coordinates, say, will never > have NaN as an input). Again also, this design eliminates the possibility of > writing a class of useful algorithms that use Numeric. It also doesn't > address the problem of sorting (as NaN would still compare unordered to all > other values). These are serious questions that require careful consideration. > > In initiating this conversation, my goal has been to start a conversation > about possible designs for `Equatable` and `Comparable` that permis useful > generic algorithms to work correctly with floating point without hampering > performance or changing syntax for concrete numerics. Unless this is clearly > impossible, the leap of changing the behavior of `==` for a numeric type > should absolutely not be the proposed solution, in my view.
What about bringing `===` into the mix? IIRC `identity`semantics aren't well-defined for value types anyway. Is there even an "Identifiable" protocol in the stdlib? - Dave Sweeris
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev