> On 23 Feb 2017, at 18:40, David Sweeris <[email protected]> wrote:
> 
> 
> On Feb 22, 2017, at 23:52, Karl Wagner via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> 
>> 
>>>> 
>>>> Are there Number types which can’t be Comparable?
>>>> 
>>>> Complex numbers. I believe `Number` is designed to allow a complex number 
>>>> type to conform.
>>>>  
>> 
>> Magnitude could be comparable then. For vectors, matrices and complex 
>> numbers, “magnitude” typically refers to a scalar. I don’t think we need 
>> something broader than that.
> 
> Using magnitude for comparison leads to some decidedly odd places:
> let x: Complex = 1
> let y: Complex = -2
> x < y // returns true
> 
> - Dave Sweeris 


Fixed:
> let x: Complex = 1
> let y: Complex = -2
> x.magnitude < y.magnitude // returns true

I don’t mean we should compare all numbers by magnitude, only that the 
Magnitude associated type be required to be comparable. That way you could, for 
example, sort things by magnitude (if that’s useful to you).

Given that magnitudes appear to always be scalars (I couldn’t find an exact 
definition beyond a “norm”, which is a scalar), it seems fair to require them 
to be comparable.

- Karl
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to