稲葉です。これも出しなおしです. # Subjectが消えたのは[ruby-list:13383]の自分のミスです. すみません. In [ruby-list:13422], YANAGAWA Kazuhisa wrote: > In message <9904070229.AA11857 / tux0017.sdd.tokyo-sc.toshiba.co.jp> > inaba / sdd.tokyo-sc.toshiba.co.jp writes: > > > > nを[]に束縛する. > > > > 最初のメールでもあったけど, これは「束縛(bind)」ではなくて,単に代入 > > と言うと思います. 束縛というのは環境に新しい変数を導入してその変数 > > に値を与える事だと思うのです. > > うーむ,良くわからない.Lisp や ruby や Smalltalk で「代入」に見える物 > はすべからく「束縛」だと思っていたりしたので.数学的に正しい意味でのい > い方,というよりは感覚的なものですが.「束縛は新たな『名前』を導入して > 値を結びつける事である」ということですが,「結びつける」という行為を > 「束縛」と表現したくなる. これは、「束縛」というtermがどのように使われてきたか、という歴史的な事 になると思います。で、本棚をひっくり返して「束縛」を探してみました。 「プログラミング言語ML」by Jefeerey D. Ullman 訳書p.43 CやPascalをはじめとするほとんどの言語では通常変数と呼ばれる 「箱」の集まりからなる環境(environment)中で計算が行われる... 伝統的な言語では計算は副作用すなわちストアを変更する事で行わ れる...MLの興味深い点は...ストアを変更できないことである... MLは環境に新しい値の束縛(value binding)を加えることによって 計算を行う... 「初めての人のためのLISP」 竹内郁雄=著 p.64 ... 実効的には代入と同じことですが、この場合、“新たに”変数 (つまり新しいメモ用紙)を用意し、同時に代入も行うので、雰囲気 が少し違います。Lispの世界では歴史的な理由からこれを代入と呼ばず に、束縛(binding)と呼びます。...束縛という言葉は“一時的”という ニュアンスを含んでいます。... 自分の使う「束縛」の意味はこの竹内さんのものと同じです。 この2冊は自分の使いかたに沿うものですが、以下では違っていました。 「オブジェクト指向入門」by Bertrand Meyer 訳書p.120 ...単純型のエンティティを含む場合... 代入 a:=bは、bをaに束縛 (bind)するのではなく、単にaの値をbの値に変更する。その後のaに 対する操作もbに変化を与えない。 しかしエンティティがクラス型の場合、...代入a:=bがaとbの間に持 続性のある束縛を作ってしまうことである。aとbはさらに代入が行わ れるまで同じオブジェクトを参照する。... 束縛の意味をこうとらえれば、Lispやrubyにおいて代入は「束縛」ですね。 柳川さんやなひさんのイメージに近いのかもしれません。 # 後半の方にもフォローしたいけど, とりあえず束縛の件だけで出します. -- 稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>