Here is the proposal draft: https://github.com/Anton3/swift-evolution/blob/remove-precedence-bitwise-arithmetic.md/proposals/NNNN-remove-precedence-bitwise-arithmetic.md
Motivation will be the most difficult section here. 2016-08-02 23:30 GMT+03:00 Xiaodi Wu <[email protected]>: > Let me give you theoretical basis for why I'm +0.5 on branching off binary > operators but not these other ones. Félix is absolutely right that `a << b > / c` mixes two things. It's not merely that they're in two "different" > domains. It's that these two operators take the same values of the same > type and operate on them in fundamentally disparate ways. > > This is a bad way of phrasing it, I know--let me try to clarify: the > operator `<<` operates on an integer as a fixed-length collection of bits; > the operator `/` operates on an integer as a number, an element in the set > of all integers. The practical consequence is that overflow behavior can be > subtly different; the overflow behavior of << is 'obvious' if you're > thinking about an integer as a fixed-length collection of bits but > surprising if you think of it as an integer being multiplied by an exponent > of two. Thus, it is best to separate operators that work on integers as a > collection of bits from the other numeric operators. > > In no other of your proposed branches do I find the same fundamental > conflict. > And that argumentation seems insufficient to me. Assuming that everyone knows precedence table, 'a << b / c` should not be ambiguous. I'd argue that it's easy to understand that << operation will overflow here and / will not. Instead, I suggest that these operations are so different that any precedence relationship between them is meaningless (another wording of explanation with domains).
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
