けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list:35624] the message: "[ruby-list:35624] Re: new mathn
[Re: Rational#to_int ← String#center]", on Jul/24 11:39(JST) Yukihiro
Matsumoto writes:

>まつもと ゆきひろです

>どのように実現するかはともかく、Perlの use integer のような
>文法で指定できるとよいでしょうね。個人的には以下のようなのを
>夢想してます。

>def foo(a,b)
>  a/b
>end
>
>
>def bar(a,b)
>  use DivFloat
>  a/b
>end
>
>use DivRat
>
>a = 1
>b = 2
>
>a/b # => Rational(1,2)
>foo # => 0
>bar # => 0.5

これらって, 静的スコープですよね? そうでもないのかな? 

動的スコープで良いなら, 実行コストは別にしてscope-in-state.rbで実現さ
れています. これだと

  DivFloat.set_current

ですが, useを関数にすれば同じ形で実現可能です.

静的スコープと動的スコープのどちらがよいかは, 使い方によるんでしょうね.

>問題はどのように意味づけするかですが...

静的スコープならselector name spaceではないかと思うのですが? 違うのか
な?

ちなみに, scope-in-stateは私のオリジナルの考えで, もとはUMLの
ClassInStateから来ています. ClassInStateは, クラスの一種ですがインスタ
ンスの状態に応じて, クラスの定義を動的に変えようってものです. 

scope-in-stateの方は, 状態自身をスレッドに持たせその状態に応じて, クラ
スの定義を変えようってものになっています. ただ, 自由に変えるのは不可能
なんで, 見た感じとしては状態に応じてincludeされているモジュールを入れ
替えてそのモジュールで定義されているメソッドが有効になるようになってい
ます.

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---