** 演算子の結合性

D&Eを読んでいて出ていたテーマなのだが
冪乗の演算子 ** は、左結合と右結合のどちらが「自然」だろうか。2 ** 3 ** 4 は、左結合なら (2 ** 3) ** 4、右結合なら 2 ** (3 ** 4) の意味である
ここで、従来の数式ではどうかというのを考えてみると、前者は (2^3)^4、後者は 2^{(3^4)} であり、かっこが省略できるのは後者で 2^{3^4} である
とすると、2 ** 3 ** 4 の意味も 2 ** (3 ** 4) 、すなわち右結合のほうが自然であろう。というわけで、だと思われるが、Ruby での ** の結合性はそうなっている(Python もそうなっている)
** 演算子Ruby が引き継いだ元であるところの Fortran ではどうなのか知らないが、Formula Translation の名の通り数式との親和性があるとすると右結合なのだろうか
VB では算術演算子が全て左結合になっているようである。他の Basic とかどうだったかな。ANSI Full Basic には冪乗演算子あったっけ
ところで、Ruby では言語内蔵の演算子をオーバーライドできるけど、新しい演算子を定義したり結合性を変えたり優先順位を変えたりとかはできない。なので ** の数値演算以外の使い道が何かあるかな...と思ったりするわけであるが ri で調べたところでは既存のクラスでそういったものはない。他に右結合の演算子は代入があるけど、そちらはオーバーライドできない。Ruby 右結合 で検索したら ruby-list:28219 というのが見つかる