ごとけんです

In message "[ruby-dev:4647] Re: module Precision"
    on 99/02/03, 石塚圭樹 <keiju / rational.com> writes:

>一所懸命検討して下さったのに何なんですが, 

それはいいんです。一所懸命考えたら採用ってのも変だし(^^;;

>                                          私は昔のままで良いのでは? と
>思っています. 
>
>module Precision
>  def prec(klass)
>    # 知らないクラスはklassにたのむ
>    klass.induced_from(self)
>  end
>
>  def induced_from(num)
>    変換できない旨のエラーをだす
>  end
>end

これは気持は分かるのですが、mixin でクラスメソッドを
定義することはできるのですか??

>つまり, induced_fromで再び呼び出す必要はなくエラーを出せば良いと思うの
>ですが? 
>
>というのもこのメソッドが呼ばれるのは, その前にprecでnumがklassに精度変
>換する方法を知らないのでここに呼ばれているからです. だから,
>induced_fromで精度変換を知らないからといって再びnumに聞いても知らない
>に決まっていると思うのですが?

考え方はあってます。

問題は induced_from と prec の実装で、どこまで他のクラスの
メソッドを使ってよいかという基準が曖昧だということです。
この点をはっきりさせるために、

  * prec (-> induced_from (-> terminal_prec))
  * induced_from の実装で prec を使うのは禁止
  * terminal_prec の実装で prec や induced_from を
    使うのは禁止。

という導出のモデルを明確にした方がよいと考えました。

それで、

In [ruby-dev :4632 ] the message: "[ruby-dev:4632] Re: module
Precision ", on Feb/03 17:15(JST) GOTO Kentaro writes:

>ごとけんです

>現在の僕の考えは、新しく精度をもった数値クラスを実装する人は
>クラスメソッド induced_from と terminal_prec を用意し、
>Precition をインクルードするというモノです。
>これに対する何らかのコメントをどなたかお持ちですか??

というわけです。
やっぱり冗長に思われますか?? 

もちろん induced_from で prec を使わないといっても他の
メソッドから間接的に prec を使ってしまうとやっぱり困ります。
が、上の導出モデルを書いておく場所として、prec のマニュアルと
いうのはよいかなとも思います。さもなくば、昔のままだと、

  * prec の実装で induced_from を使うのは禁止

もしくは

  * induced_from の実装で prec を使うのは禁止

というようなことをどこかに明示しておく必要があると思います。

-- gotoken