[swift-dev] Rationalizing FloatingPoint conformance to Equatable

Chris Lattner clattner at nondot.org
Fri Nov 3 00:39:20 CDT 2017


> On Nov 1, 2017, at 9:16 AM, Ben Cohen via swift-dev <swift-dev at swift.org> wrote:
> 
> 
> 
>> On Oct 31, 2017, at 10:11 PM, Chris Lattner via swift-dev <swift-dev at swift.org> wrote:
>> 
>> On Oct 31, 2017, at 9:07 AM, Stephen Canon via swift-dev <swift-dev at swift.org> wrote:
>>> [Replying to the thread as a whole]
>>> 
>>> There have been a bunch of suggestions for variants of `==` that either trap on NaN or return `Bool?`. I think that these suggestions result from people getting tunnel-vision on the idea of “make FloatingPoint equality satisfy desired axioms of Equatable / Comparable”. This is misguided. Our goal is (should be) to make a language usable by developers; satisfying axioms is only useful in as much as they serve that goal.
>>> 
>>> Trapping or returning `Bool?` does not make it easier to write correct concrete code, and it does not enable writing generic algorithms that operate on Comparable or Equatable. Those are the problems to be solved.
>> 
>> +100.  Swift isn’t the first language to face the problems of floating point, nor is it the first to try to shoehorn it into a framework like Equatable.  
> 
> Java and C# do not have this problem with their generic algorithms (albeit possibly because of limitations in their languages that Swift doesn’t have). Swift is setting itself up as a major language with confusing and unjustifiable behavior by comparison. That some other languages are also bad at this doesn’t seem relevant.

C++ has exactly this problem, std::sort on a std::vector<double>.  I haven’t seen the world burn down in practice.

-Chris



More information about the swift-dev mailing list