> 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

Reply via email to