原です。

> 青山です。

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

> p c["foo"]

> x が束縛するので c が束縛するとも言えます。ただし、これは x = "foo" と
> 同じレベルの事であり、このような x をすべてのオブジェクトを参照してい
> ると言えないように、c はすべてのオブジェクトを参照していると呼んではい
> けないだろうという意味での例です。

この内容については、ひとまずおいておいて、ここでの「c が束
縛する」という言い方が(何重にも^^;)気になります。

話がかなりデリケートになってきたので、ここで仮に用語を制限
することにしませんか?あくまで「仮」です。正式には Ruby 標
準化委員会にでも任せましょう。:-)

【「用語の使い方」草案1】

(1)変数の束縛

var = "obj" とするとき、変数はオブジェクト "obj" に「束縛
された」といいます。逆にいえば、オブジェクト "obj" は変数
var を束縛する。さらに foo = var とすると、foo も "obj" に
束縛されます。どちらの = も Ruby では「代入」呼ばれます。
(2つの = に区別があるかどうかの判断は保留。)

これは広義の束縛であって、lisper にとってこの使い方は気持
ちわるいです。lisper にとっては新しい変数を導入し値を代入
することが束縛です。

気をつけるのは、このとき「オブジェクトが変数に束縛された」
とは言わないといういう事です。(あくまで仮です。)一般に自
由だったり束縛されたりするのは変数であるからです。紐モデル
では、変数が紐だったりするので、紐がオブジェクトを縛るイメ
ージもあるかと思いますが、紐はただ1つのオブジェクトにしか
結びつかないのにオブジェクトには複数の紐がつく事からも束縛
されているのは、紐の方であるというのも悪い言い方ではないと
思います。

明らかに var が変数であるときは、「var を束縛しているオブジ
ェクトが、、、」と言う所を「オブジェクト var が、、、」と言
ってしまっても良いことにしましょう。

(2)変数がオブジェクト参照すること

var = "obj" とするとき、変数はオブジェクト "obj" を参照して
います。(「参照とは何か」という事と「束縛とどう違うか」に
ういては議論中。)少なくともこのときは参照していると言って
いいでしょう。

(3)オブジェクトがオブジェクト参照すること

オブジェクト obj1 のあるインスタンス変数 @var が他のオブジェ
クト obj2 を参照しているときは、「オブジェクト obj1 は obj2
を(@var を通して)参照している」と言って良いでしょう。
(他の場合にもオブジェクト同士の参照関係があるかについては議
論中。)

(4)オブジェクトが変数を参照すること

いまのところこの言い方はしないようにしましょう。

(5)変数がオブジェクトを束縛すること

さしあたってこれも避けます。

これは(1)の意味で使うことを避けるというのいうのと、
変数 var がオブジェクト obj1 に束縛され、obj1 が obj2
を参照しているとき、変数 var は obj2 にも束縛されてい
る、言うのも避けるという意味です。このとき var は obj2
も(間接的に)参照している、と言うのはいいでしょう。

(6)オブジェクトがオブジェクトを束縛すること

これもさしあたって使わない方がいいのではないでしょうか。


いまのところこのぐらいです。で、束縛はかなりテクニカルターム
であって定義の問題ですが、日常語に近い「参照」あるいは「参照
する」という言葉についてどう使うかについて議論がいろいろ出て
います。私は、

(A)「参照」という言葉をいったん禁止、「参照する」という言
葉を許し、「参照することを」改めて「参照」と呼んでもよいこと
にする。

という案を持っていたのですが、gotoken さんからは、

(B)「参照している」という言葉は禁止、「参照した」というの
を許す。

という案が出ています。違う?(^^;


後、式を評価した「値」という言葉をオブジェクトへの「参照」と
とるか、オブジェクトそのものととるかという大問題も残っていま
す。