From: keiju@... (Keiju ISHITSUKA) Date: 1998-04-10T18:37:49+09:00 Subject: [ruby-dev:2231] Re: new coerce けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :2210 ] the message: "[ruby-dev:2210] Re: new coerce ", on Apr/09 18:23(JST) toyofuku@juice.or.jp writes: > 豊福@パパイヤです。 > 私が前に書いた coerce の考えだと coerce は >クラスとクラス間のものなので一つのクラスだけを >取り出してこのクラスには coerce は必要ないと >決められないような気がします。 > 例えば +演算は持っているけれど coerce が必要 >なさそうなクラス C があったとしても C と Integer >の直積クラス C' を考え、 > x (x は C の元) -> (x, 0) >によって C を C' の部分集合と同一視するとき >C + C' で C の元を C' に coerce してもいいよう >な気がします。 ちょっと主張したいことがよく分かりませんでしたが(^^;;; C'を定義した時 点でCにそのモジュールをインクルードすればいいんじゃないかと思いますが... たぶん, そのモジュールが数に限定されていると使えないじゃんといいたいん でしょうね. >(そんな直積に実用的意味があるかどうか全然わからないですが) 実際Rationalなんかはは同じことをやっていますよね. 直積でなく商集合(だっ け?)を使っていますが. Rational = Integer x Integer / 約分で等しくなる関係 (x, 1) == x と同一視 そういう意味では実用性がないという気はないんですけどね. そういう意味では, 豊福さんの考えは, クラスを拡張した時(C->C')の演算子 の外延(+->+')のサポートにあるってことになるのかな... そうすると, Extensible か, 演算子(と1引数を持つメソッドだけが対象だから) OperatorExtensible って感じかな... 複数の引数を持つメソッドにもcoerceできる機能があるとすごいんですけど ね... そうすると, 実用性もかなりまして数以外にも使えるんだよっていえる んですが... > Complex/Matrix だけで考えると四則演算の定義 >されたある種の数学的クラス Ring があればいいの >かなという気がしますが、集合はこれには入らない >ですね。 # 集合は入らなくていいんですけど(^^;;; でも, 松本氏の指向としてこういうモジュールの導入はうんとはいわないでしょ う(^^;;; だから, 定義される可能性のあるCalcurableにその機能を持たしちゃ えと思ったのでした. __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---