From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1999-02-10T00:33:07+09:00 Subject: [ruby-dev:4933] Re: module Precision けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :4929 ] the message: "[ruby-dev:4929] Re: module Precision ", on Feb/09 23:26(JST) "豊福" writes: > 豊福@パパイヤです。 > 私(だけのようですが)は coerce を「演算という >代数的性質の実現」とは今のところ考えていません。 >たまたま代数的演算にしか coerce を使っていないだけ >だし、代数的性質を仮定して coerce を書いている人も >まだいないと思っています。 これは, 昔の新coerceアーキテクチャに関する話題ですね. >>> prec を coerce で書けないというのはどこがネックに >>>なっているのでしょうか。「+」などの演算と「prec」で >>>どこが本質的に違っているのか興味があります。 >> >> prec 自体は問題ありませんが,induced_from のように >> 初期値として引数をちょうど1個だけ必ず要求する new の >> ようなモノがないことが問題です. >> >> Integer() とか Float() とかはありますが,構文的制約から >> prec(klass) を klass(self) では定義できないことが >> induced_from を考えた一番の理由です. > > 「初期値として引数をちょうど1個だけ必ず要求する >new のようなモノが必要」というところからわかりません。 precは下記のように使うものです. 1.prec(Float) 引数はクラスですよね. 一方, coerceは2項演算子のためですよね. 1.op(1.0) ですので, precには適用できないといっているんだと思います. あ. ああっ!! class Integer def prec(other) x,y = other.coerce(self) x end end def Float.coerce(other) case other when Integer return other.to_f, self : end end 見たく定義すれば? ってことですか? >「prec を coerce を使ってここまで書いてたらこういう >値が必要になって行きづまった」のような具体例がない >でしょうか。 > prec から呼ばれたときの coerce は所望したクラスの >モノを返すように作ってやればよいのではと思うのですが。 >その難しさを私が理解していないところが問題なのかな。 うーん. 本当にそう主張しているんですね(^^;;; # きっと, こんなことは, 豊福さんしか気がつかないに違いない. 確かに, 数値のインスタンスのみに適用するのではなく, 上記のようにクラス にも適用することにすれば, precもcoerceを用いて実現できると思います. ただし, precから算術演算で必要なcoerce様機能も実現できますので, どっち がよりプリミティブな機能かという問題は別ですが... # でも, coerceを用いるという案も結構面白いなと思ったりして(^^;;; __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---