[swift-evolution] [Discussion] Breaking precedence
xiaodi.wu at gmail.com
Tue Aug 2 08:31:30 CDT 2016
What's your evidence that it's non-intuitive? I literally use << for powers
of 2, as I'm sure do many others. As in, 1 << 3 == 8. Do you have a better
way of computing, say, 2^53?
On Tue, Aug 2, 2016 at 04:29 Anton Zhilin <antonyzhilin at gmail.com> wrote:
> 2016-08-02 7:18 GMT+03:00 Félix Cloutier <swift-evolution at swift.org>:
>> I disagree. The binary operators have properties that are comparable to
>> arithmetic operators, and their precedence is easy to define as such. & has
>> multiplication-like properties (0*0=0, 0*1=0, 1*0=0, 1*1=1); | has
>> addition-like properties (0+0=0, 0+1=1, 1+0=1, 1+1=2); ^ has
>> subtraction-like properties (0-0=0, 0-1=-1, 1-0=1, 1-1=0), and their
>> precedences are set accordingly (& is multiplicative, | and ^ are additive).
>> The same applies to && and ||. Bit shifts are exponentiative.
> I believe that such way of thinking is non-intuitive. In C, bitwise
> operators are not intervened by any others, except for comparison operators
> (agreed, it was a mistake). We now have possibilities to do so in Swift,
> even better. I suggest to branch off right before AdditionPrecedence:
> RangeFormation < Addition < Multiplication
> RangeFormation < BitwiseOr < BitwiseAnd < LogicalShift
> Another concern is NilCoalescing, which can be though to be semantically
> similar to Ternary. And at the same time it looks like || and &&, which
> would bring it between LogicalConjunction and Comparison.
> Also, do Casting and RangeFormation stand where they should?
> Next, Ternary operator is unique. Noone would ever like to put operators
> in this precedence group, because it would be confusing. Why not simplify
> our model and say that ?: has lower precedence than all binary operators,
> including Assignment? Unary > binary > ternary, sounds good?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution