From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2008-05-09T00:07:57+09:00 Subject: [ruby-dev:34616] Re: ComplexFloat けいじゅ@いしつかです. In [ruby-dev :34613 ] the message: "[ruby-dev:34613] Re: ComplexFloat ", on May/08 18:24(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|# 誉めすぎ? >でしょうね。 いや. 何か, 野生の直感が(^^;; >熱海での合宿のときに、私が(CommonLispを参考に)coerceを導入し >ようと話を持ち出して、その上で石塚さんが両辺とも変換したい場 >合があると主張したんで、今のようなcoerceシステムができたよう >に思います。当初はcoerceメソッドは値をひとつしか返してません >でした。結局、まだ複数の値を使う必要があるcoerceにはまだお目 >にかかってませんが。いや、そういえばRationalがselfをFloatに変 >換してるか。 うーむ. そんな話でしたっけ? でも, 松本さんが言うならその通りかも... んで, 重要なのは: >その上で石塚さんが両辺とも変換したい場合があると主張したんで、今のよ >うなcoerceシステムができたように思います。当初はcoerceメソッドは値を >ひとつしか返してませんでした。 の件ですよねぇ... あまりにも遠い話なんで... 10年以上前の話ですし, それこそ直接話たので, 逆にログも残っていないですし. っていうか: >あの時は別件の合宿(GPME)だったのに、ほとんどRubyの開発ばかり >してたような気がしますね(遠い目)。 ってことは, 別会議中のボソボソ話ってことね(^^;;; で, 話は戻りますが.... 両方が変換されることを考えたのではなくて, 新たに新しい数クラスを追加し たときにどうなるかを考えたんだと思います. # この辺りは, 本業(モデリング)時にも常に考えることなので, その時もそう # 考えたでしょう(^^; 今の rubyは a op b で演算ができないとき a', b' = b.coerce(a) a' op b' です. 1つだけ変換は, 分からない方を変える: a' = b.coerce(a) a' op b のことだと思います. # 何となく思い出しました. これで困るの事例としては: a: 複素数 が先に定義されていて b: 有理数 が後から定義されたようなパター ンです. この場合, aをいくら変換しても演算可能にならないです(特殊なクラスを導入 しない限りが義理). この場合は, bを複素数に変換しなくてはなりません. PS. この事例のはじめての例としては, BigDecimalが導入されたときにチャンスが あったのですが, 私の努力が足りなくて説得しきれずお互いに変換不能となり ました... __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---