[swift-evolution] [Re-Review] SE-0104: Protocol-oriented integers

Karl Wagner razielim at gmail.com
Thu Feb 23 11:54:48 CST 2017


> On 23 Feb 2017, at 18:40, David Sweeris <davesweeris at mac.com> wrote:
> 
> 
> On Feb 22, 2017, at 23:52, Karl Wagner via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170223/5d59c5d3/attachment.html>


More information about the swift-evolution mailing list