> On Feb 22, 2017, at 10:55 AM, Max Moiseev via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>>     default func multiplied(by other: Self) -> Self // `default` means try 
>> resolving ambiguities with this version first. The overloaded versions are 
>> only considered if the type-checker can’t make this version work.
> 
> This feature is not strictly required in this case, as we moved away from 
> using `multiplied` of type (Self, Self) -> Self to using proper `static func 
> +`. So the ambiguity will *not* happen in the most common case when you want 
> to multiply two numbers of some type and get the result of the same type. 
> Ambiguity will only become a problem in what I believe to be a very less 
> frequent case, when you want to do something very special, like, catch the 
> overflow explicitly or get the full result in a form of DoubleWidth<T>.

True, but I think the only reason we're not using operators for the other 
`multiplied` variants is that they need the third parameter. So we could 
instead specify:

        default static func * (lhs: Self, rhs: Self) -> Self
        static func * (lhs: Self, rhs: Self) -> (partialValue: Self, overflow: 
ArithmeticOverflow)
        static func * (lhs: Self, rhs: Self) -> DoubleWidth<Self>

And not have to worry about these names at all.

(On the other hand, the reversed DoubleWidth division would still be a problem. 
But isn't there a proposal in the works to add `\` to the operator characters?)

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to