ど〜も、中井と申します。

Hideto ISHIBASHI さんは書きました:
------------------------------------------------
>> そうかなぁ。結合順位までサポートしてるんだし、文字の入った式
>> なんだし少なくとも中学校以上の数学表記を頑張ってサポートして
>> ると思うんですが。まつもとさんにはそういう意図はなかったかも
>> 知れないけど、多くのプログラミング言語で扱う算術式はそうだと
>> 思いますので、その考えを継承しないのは結構大胆かと。
>
>ぼくも、「メソッドコールの別名に過ぎない」と割り切るほうです。
>つまり、"a.b(c)"というのは、「レシーバaに、メッセージbを、パラメタcで渡す」
>という意味であって、「変数aに適した型の関数bを引数cで呼ぶ」というのでは
>ないからです(というのはまともなOOのOOPLとして見た場合)。
>
>そうであれば、"a.b"と"b.a"が可換であるというのは、OO的には不自然です。
------------------------------------------------

いままで、可換かどうかとかはあまり意識したことは在りませんでしたが、
型変換の対象性などの取り扱いについては、以前より(別にRubyに限らず
に)現状のプログラム言語での算術演算子の位置付けにそこはかとない違
和感をかんじておりました。

別にこれが正解とかの意見や変更提案ではないのですが、最近自分は次の
様に考えています。

a + b  ===>  Calculate.apply( "+", a, b )

(初期化時に各クラス(Integer, Complex 等)が上記 Calculate(?) モ
  ジュールに自分についての情報を登録しておく。)

みたいな感じなのではないかな?

やはり算術演算子は、両辺のどちらが主役と言うのではなく、あえていえば
演算子が主役なのではないでしょうか?

ひょっとして MathOperator.plus.apply( a. b )   ???

以上です。

# 特に内容のあるメールでなくて申し訳ありません。

----
Takashi Nakai  nakai / m1.sys.to.casio.co.jp