From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1999-02-09T23:26:47+09:00 Subject: [ruby-dev:4930] Re: man Precision けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :4928 ] the message: "[ruby-dev:4928] Re: man Precision ", on Feb/09 22:40(JST) GOTO Kentaro writes: >ごとけんです >すみません.でも僕も忙しい(はず)なので夜から朝にかけて >しかメールを書かないようにはしてるんですけど (^^;; (^^;;; >もちろん.ただし Matrix#prec と Precision#prec は >利用者の簡便(?)のために名前を揃えることはよいとは思いますが, >実装は全然違うはずで,下で確認するように仕様にしても引数に >どのクラスをもってこれるかが違います. >> Matrix[[1,2],[2,3]].prec(Complex) >Complex{Rational} みたいにパラメータつきのクラスがあれば, >完全に上の例は容認できます.さもなくば prec なのに実際の >(各要素 real と image の)精度が不定になるので反対です. Complex自身精度を持っていないので良いのでは? つまり, 元々の精度が保持 されているということで. # coerceの新しい案ではなくてはならないものなのでOKして欲しいような... >>何か方向性があるんですね. >> >> Integer <-> Float <-> Rational <- Complex <- Matrix >> |---- 精度を持つクラス ------| >> >>精度を持つクラスといわれている部分はお互いに変換可能ですが, そうでない >>クラスは, その構成要素となりうるものが何であるかによって変わわってくる >>と. > >そうです.そのお互いの変換可能というのが Precision のココロです. ># ># あとで豊福さんの質問に答えてて自分でそう思いこんでいたことに ># 気づいたのではありますが (^^;; えーと, ここからが文脈がよくとれないのですが, Precisionモジュールをイ ンクルードできるのは, 精度を持つクラスに限らなくても良いって意味でしょ うか? >そのために,例外を起こすだけの Precision#induced_from を >定義してたりします.つまり,Precision#prec をもつなら >induced_from を再定義し実装せよ,即ち「< Precision」を >名乗る以上は他のクラスからの変換要求に応えよ,ということです. 純粋抽象(仮想)関数なわけですね. # そういえば, Rubyにはそういうものがないなあ... >>coerceと同じく, precとinduced_fromでそのタイプが変換して良いか悪いか判 >>断するようにしたらいががでしょう? > >うえのココロを受け入れてもらえるなら > >module Precision > def prec(klass) > raise klass < Precision > klass.induced_from(self) > end >end >としますが,いかがですか?? うーん. お互いに話しが噛みあっているのかどうか不安なんですが... 先に確 認した前提でのお話と思って良いのでしょうか?? __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---