David, what about un-labeled parameters? If a function has 2 parameters of the 
same type, how does compiler know which ones's which?

> On Nov 13, 2016, at 9:49 PM, David Sweeris via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 
>> On Nov 13, 2016, at 1:38 PM, Андрей Володин via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Hi, list!
>> 
>> I’m thinking about proposal that would add a possibility to save some time 
>> on creating symmetrical binary operators.
>> 
>> The latest code example from my math lib:
>> 
>>     @inline(__always)
>>     public static func *(lhs: Angle, rhs: Float) -> Angle {
>>         return Angle(lhs.degrees * rhs)
>>     }
>>     
>>     @inline(__always)
>>     public static func *(lhs: Float, rhs: Angle) -> Angle {
>>         return Angle(rhs.degrees * lhs)
>>     }
>> 
>> The API of Angle doesn’t really matter here, what’s important is that I have 
>> to write another operator to make it symmetrical. Not so hard: 3 lines of 
>> code. It can even refer to original implementation, instead of duplicating 
>> the logic. But I think it would be nice to have something like symmetrical 
>> keyword, just like we have associativity and precedence. 
>> 
>> I also bet that all operators should be asymmetrical by default.
>> 
>> Any thoughts?
> 
> I fully support adding a “@commutative” attribute or something to let the 
> compiler know that a function can be called with its arguments out of order, 
> but I’m thoroughly against turning it on by default. Some operations, such as 
> matrix multiplication, aren’t even defined if you swap the arguments.
> 
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to