原です。

> 青山です。

> >   b = Object.new
> >   def b.[](i); i+8; end
> > 
> > とした場合、a[0] == b[0], a[1] == b[1] ですが、いくら
> > なんでも b が 8 と 9 を参照しているとは言い難い。そん
> > な事を言えば b は少なくとも全ての Fixnum を参照してい
> > ると言わなくてはならなくなる。

> 通常は、b.[](i) が呼ばれた段階で i+8.1 が評価され、新たなオブジェクト
> が生成されます。これは、メソッドとして定義しているとかは関係なく、
> i + 8.1 が評価された段階で新たなオブジェクトを生成するからです。

その件は理解しています。ここでは a と b が同じオブジェクトを参照
しているかどうかが問題であるのではなく、b はオブジェクトを参照し
ていると言うべきか否かという事なんです。極端な話、

  c = Object.new
  def c.[](x); x; end

とするとき、c はすべてのオブジェクトを参照していると、そう呼んで良
いかどうか。