ども、Rubyはぜんぜん使ったことない(というか使えない)機械です。
> > A + B
> > を定義しようとすると、かならずBの側で定義する必要があるよ
> > うですね。
>
> 普通 A のほうに定義すると思うんですが。
完璧に本を読み間違えました。
おっしゃるとおり、Aの方ですな。
> > よって、Bが組み込みオブジェクトだと面倒らしく、そのために
> > 特殊なルールがあるみたいですね。
>
> これは何の話でしょう? coerce かな?
coerceですね。
あまり新しいルールを覚えて混乱したくなかったので、詳しいところ
は読みたくなかったのですが・・・
う〜〜〜予想以上にややこしいっす(coerceに対するコメント、終り)
> それよりも、もっと面倒なのは暗黙の型変換のせいじゃないでしょうか?
C++はクラスインスタンスについては非常にシビアなので、明示的なキャスト
がなければスーパークラス型にさえなりません。
よって、演算子に関しても「実用にならないくらい」明瞭(笑)だと、私は思
いますけどいかがでしょう?
※ここらへん、Javaはかなり柔軟に改良されてますね。
> でも逆にいうと、演算子の可換性を宣言することができれば、
> 純粋オブジェクト指向+演算子をちゃんとミックスした言語が
> 作れそうな気もします。深く考えていませんが。
オブジェクト指向主義も、文脈を明瞭にして「理解しやすさ」をもとめたもの
だと私は思っています。
とすると、演算子の可換性(・・・う〜ん、この言葉、初耳です。勉強が足り
ないな・・・)を宣言してたとすると、果たしてそれが「わかりやすい」文脈
になるかどうかは、私はちょっと疑問ですけどねぇ・・・
ま、言語は設計して実際に使ってみないとわかりませんけど、設計の方向性に
ついては真剣に考える必要があると思います。
・・・んでも、ことプログラム言語においては「とりあえず」で作ったものが
結構定着するのが事実なんですけどね・・・
機械伯爵