[swift-evolution] [Review] SE-0077 v2: Improved operator declarations

Joe Groff jgroff at apple.com
Thu Jun 30 11:08:57 CDT 2016


> On Jun 30, 2016, at 2:34 AM, Anton Zhilin via swift-evolution <swift-evolution at swift.org> wrote:
> 
> https://github.com/apple/swift-evolution/blob/master/proposals
> /0077-operator-precedence.md
> 
> Idea #1
> 
> There is a high chance that 'higherThan'/'lowerThan' names will be 
> chosen. I still see a problem with that. Keywords in Swift are written 
> in full lowercase, so we should actually take 'higherthan'/'lowerthan'.
> 
> But then what's the point of the preposition? It blends with 
> higher/lower and doesn't actually add any clarity. So we should drop 
> 'than' and have just higher/lower or above/below or succeeds/preceeds or 
> whatever we choose, but *in a single word*.

These aren't formal keywords, though, they're contextual to a precedence group declaration.

> Idea #2
> 
> I personally don't like the direction in which the proposal moved (I 
> understand the reasons). Before the first review, consensus seemed to be 
> on this:
> 
> precedence Multiplicative {
>    above Additive
>    below Exponentiative
> }
> 
> And now:
> 
> precedencegroup MultiplicativePrecedence {
>    higherThan: AdditivePrecedence
>    lowerThan: ExponentiativePrecedence
> }
> 
> Don't you have a feeling that something cute and 'swift' was turned into 
> a monster?
> 
> At least, if we change keywords, we will get this:
> 
> precedence MultiplicativePrecedence {
>    above: AdditivePrecedence
>    below: ExponentiativePrecedence
> }
> 
> I also like in above/below that they are written with the same number of 
> letters, meaning that they will line up nicely.

To reiterate the core team's rationale, precedence groups ought to be a relatively rare thing. Few users ought to be defining new operators, fewer still new precedence groups. Furthermore, the '-Precedence' word clarifies the use site in an operator decl:

	infix operator ΒΆ : PilcrowPrecedence

making it clear that the ':' is associating a precedence with the operator. Since operator decls are themselves hopefully rare as well, this added clarity should hopefully save unfamiliar users a trip to Stack Overflow.

-Joe


More information about the swift-evolution mailing list