Issue #13152 has been updated by Marcus Stollsteimer.


The comparison with other programming languages is kind of interesting, but the main argument IMO for
the implemented behavior hasn't been mentioned yet:

We are talking about mathematical operations here, and in **mathematics**, the expression -a^b is equivalent to -(a^b), because the exponentiation has a higher precedence. So Ruby's behavior _is_ more "natural and intuitive" IMO (while I would tend to consider Crystal's behavior wrong, or confusing at best).


----------------------------------------
Bug #13152: Numeric parsing differences between ruby <-> crystal
https://bugs.ruby-lang.org/issues/13152#change-63066

* Author: Jabari Zakiya
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
I noticed this difference between ruby and crystal when converting a gem.

```ruby
puts   -2**4 -> -16 (ruby) || 16 (crystal)
puts (-2)**4 ->  16 (both)
```

ruby parses `-2**4` as `-(2**4)`, while crystal does `(-2)**4`, which is more intuitive.
This creates need to be careful converting negative number usage from ruby <-> crystal.
(I haven't investigated differences with other languages.)
Using parentheses to explicitly create intended outcomes can overcome this.

However, on the heels of the discussion/decision to not change the default rounding behavior of numerics
in 2.4.0 would it also be worth it to change this parsing behavior to make this more natural
and intuitive, as in crystal?



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>