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

In [ruby-dev :01565 ] the message: "[ruby-dev:1565] Re: [BUG]
String.dup ", on Mar/03 14:53(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>|きっと, new内のsuperに関するものですね?
>そうです.
>
>|newの時だけ問題になるんですかね?
>
>一番問題になるのはnewでしょう.スーパークラスは通常のクラス
>で,サブクラスで組み込みクラスにして,メソッドも置き換えると
>いうような場合には問題が発生しうると思いますが,現在のrubyの
>クラスの中で一番それに近そうなFixnumではそーゆーメソッドはな
>いようです.

ふむ.

>|String < Primitive < Object
>|
>|のような実装して, Primitiveでガードするというのは?
>
>なかなか良いアイディアですね.思い付きませんでした.ただ,
>Stringに関してはこれで良いんですけど,ThreadやProcなど数多く
>の組み込みクラスをPrimitiveのサブクラスにするとか,拡張モジュー
>ル内で定義されるクラスはどうするのか,とか考えるともうひとひ
>ねり必要そうです.

今ってそうなっていなかったんですか? DATAがそのクラスだと信じていたので
すが? 

それはともかく, 代案としては.

1. このままほっておく. Smalltalkでも同じような問題はありました. でも, 落ちや
   しなかったですが...

2. PrimitiveなクラスはObjectのサブクラスではなくして, Kernelを直接イン
   クルードする.

3. Primitiveなクラスのnewは再定義できなくする. 

4. 最初の案とにていますが, Primitiveはクラスでなくてモジュールとし特異
   クラスでextendする.

5. primitiveかどうかわかるフラグを各クラスにつける.

このぐらいかなあ...

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