豊福@パパイヤです。

原さん
> 原理的には TheArray というただ一つの Array オブジェクトが
> あれば作れます。つまりこれをリニアなメモリだと考えることで、
> 直列に並べれば複数の配列を格納できるからです。GC だってユー
> ザーがコントロールできるかもしれません。ということは、TheArray
> を使って Array と同じ機能を持つクラスでありながら、Array は
> 要素を参照してこっちはしていないとは言えないのではないか。も
> しかすると隠れオブジェクトとして実際の Array の実装に TheArray
> みたいなのが使われている可能性だって無いわけではない。

  なるほど。確かに私の考えだとこの実装ではすべての Array
オブジェクトは TheArray しか参照していないことになりますね。
  実装に依存しない well-defined な「参照」を考えるとしたら
参照の参照もやはり参照にならないとダメかな。そうすると
最初の例では foo は "obj1","obj2" を参照していることになり
ますね。(これは e() が TheArray[0] を返すからではなく
e() が参照している TheArray が  "obj1","obj2" を参照して
いるから)

  def foo(x); x; end

こっちは前のメールにも書いたとおり引数をつたってきただけで
何も参照していないと思います。
---
                        豊福@パパイヤ
                        unbound / papaya.juice.or.jp
                        toyofuku / juice.or.jp