**
万が一入った場合に後悔しないよう **
を実装した。
結合の仕方が覚えづらい演算子だと感じていたが、改めて調べるとさもありなん
\ | ~2**2 |
-2**2 |
2**2**3 |
assoc | prec |
---|---|---|---|---|---|
Python | -5 | -4 | 256 | right | ** > ~ = - |
Ruby | 9 | -4 | 256 | right | ~ > ** > - |
Groovy | 9 | -4 | 64 | left | ~ > ** > - |
言語によってまちまちだったのだ。
- Perl/Python
- 業界標準?
Coco の挙動は取り敢えずこれに合わせた。 - Ruby
- 優先順位が単項演算子の間に挟まっている。誰得。
- Groovy
- Ruby を真似つつ、しかし結合は左に。誰得 ** 2。
追記
\ | ~2**2 |
-2**2 |
2**2**3 |
assoc | prec |
---|---|---|---|---|---|
Coco | 9 | 4 | 64 | left | ~ = - > ** |
上記言語のどれとも異なるが、そもそもばらばらなので大丈夫だ、問題無い。
理由:
The power operator binds more tightly than unary operators on its left; it binds less tightly than unary operators on its right
http://docs.python.org/reference/expressions.html#the-power-operator
とあり、わけがわからないよ。
余談
**=
とか今回初めて書いたかも。