えぐち です。 > まつもと ゆきひろです > > In message "[ruby-list:4589] Re: Object#freeze" > on 97/09/24, MAEDA Shugo <shugo / po.aianet.ne.jp> writes: > > |前田です。 > > ||この方法は こ す と が大きな問題になりそうです。 > | > |ですね、ちょっと大袈裟すぎる気がします。 > > ええと,変数などに型のないrubyではテンプレートメソッド(この > 用語って一般的なんですか?)は必要ないと思います. > > |クラスライブラリの変更だけで済むような方法の方がよいのでは > |ないでしょうか。 > > 実は$SAFE=5のためにほとんどの変更には既にフックが仕掛けてあ > ります.配列とかハッシュとか.これを利用すればfreezeもできな > いことは無いんです.ただ,全部のオブジェクトとなるとIOとか > Dirとかfreezeの意味があるのかないのか良く分からないものとか > ModuleやClassのようなものまで考えないといけなくなってと頭痛 > いので,いまんとこ現状のようになっているわけです. 全部のオブジェクトの freeze に意味付けするのが大変なのは だいぶわかってきました。 + 変数とオブジェクトの関係の変化 + オブジェクトの内容の変化 この違いが、やっとこ理解できかけてきました。 それぞれにスクリプトから hook を掛けられるんでしょうか? それともインタプリタの内部の事情ですか? 大袈裟なメカニズムを考えてしまったのは結局、 他の言語の変数(定数)=>オブジェクトの意味モデルを強引に 表現しようとしていたのが原因だったと思います。 ライブラリで hook を掛けるとして、そのロードが明示的に必要なのですが、 + 定数としての特徴をもつオブジェクトに必要なフックを掛ける + ダンプする ってのがスマートなのではないでしょうか? ロード時間も早くなりそうだし(結構 ruby のロードって時間かかっています)、 TRUE=0 の問題も解決できそうな気がします。 ダンプの仕方思い付かないですけど、だれか考えたことありませんか? ダンプでなくても、Cの文字列に必要な rubyの コードを書いて main() の中でコンパイルしてしまうのも結果は同じでですが、、 、、あまりにもカッコ悪いです。