[swift-evolution] [Proposal] Improving operator requirements in protocols
Chris Lattner
clattner at apple.com
Mon May 2 19:04:18 CDT 2016
> On May 2, 2016, at 4:59 PM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
>
> Hmm, a thought going in a slightly different direction: if these static functions were called like any other function, there might not be a need for having special rules for parameter labels, which can then be freed to denote prefix and postfix operators. In other words, we could have:
>
> * for infix operators, no labels, like so: `static func + (_ lhs: T, _ rhs: T)`, used like this: `T.+(1, 2)`
> * for prefix and postfix operators, a label, like so: `static func + (prefixing value: T)`, used like this: `T.+(prefixing: 1)`
Using labels for this is pretty nice. "T.++(prefix: abc)” and “T.++(postfix: abc)” seem like they could work!
-Chris
>
>
> On Mon, May 2, 2016 at 6:26 PM, David Sweeris via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>
>> On May 2, 2016, at 5:58 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> On May 2, 2016, at 1:56 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>> How does one distinguish between calls to a static prefix operator and a
>>>> static postfix operator with the same name?
>>>>
>>>> Ah, that's a tricky one that I don't have an immediate answer to, so I'm
>>>> definitely open to creative thoughts here.
>>>
>>> One possibility: just use “qualified operator” notation.
>>>
>>> lhs T.+= rhs
>>>
>>> T.++x
>>> x T.++
>>
>> I’m not sure if this is exactly right, but it seems close. I think that something like this is probably the best way to go, since it composes properly in arbitrary expressions. It does have a surface level weirdness to it, but it also "makes sense” in terms of how operators work.
> Yeah… Maybe with parens?
> T.++(x)
> (x)T.++
> Or is that worse?
>
> - Dave Sweeris
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160502/b0861dba/attachment.html>
More information about the swift-evolution
mailing list