原です。

In message "[ruby-list:13441] Re: Ruby and LISP ( was Re: Ruby anywhere )"
    on 99/04/08, Wakou Aoyama <wakou / fsinet.or.jp> writes:
|
|青山です。

|ここもわかりやすい説明というのは難しいですね。

この説明分かりやすかったです。自分でも一度同様な実験をしてみた
覚えがあります。

ただ一つ指摘したいのは、これは「ruby の仕様」というよりも「ruby
の標準ライブラリの Array の freeze の仕様」だという事です。まつ
もとさん以外の人が freeze を作ったら違うものになった可能性がない
とは言えない。例えば2段階まで freeze するようなものとか、参照関
係にある全てのオブジェクトを freeze する deep な freeze とか。

これは dup などでも同じで、クラスの作者が用途に応じて作るわけで、
「これが標準的な freeze だ」というのがあるわけではないですね。
(Object#dup が shallow copy であるというのはオブジェクトの構造
がわからない限り、そうせざるを得ないわけですが。)

ちなみに「破壊的な操作」は参照されるオブジェクトが一つでも変化し
たときに使われるそうです。(deep に考える。)