Conformance to Comparable is not required by anything in the standard library.
Besides, it is always possible to further constrain your own code as in:
func f<T : Number>(_ x: T) where T.Magnitude : Comparable {}
I would argue that adding constraints without solid proof of them being useful
and necessary is not the right thing to do.
Also, sorting things by magnitude will require using a predicate-based sorted()
anyway, and that does not require Comparable.
Max
> On Feb 23, 2017, at 9:59 AM, David Sweeris via swift-evolution
> <[email protected]> wrote:
>
>>
>> On Feb 23, 2017, at 9:54 AM, Karl Wagner <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>
>>> On 23 Feb 2017, at 18:40, David Sweeris <[email protected]
>>> <mailto:[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.
>
> Ah, ok, I misunderstood you. Yes, that seems reasonable to me.
>
> - Dave Sweeris
>
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution