From: kjana@... (YANAGAWA Kazuhisa) Date: 1999-04-11T00:13:56+09:00 Subject: [ruby-list:13581] Re: What is `binding' (was Re: Ruby and LISP) In message <19990410203040.A275@tp560> wakou@fsinet.or.jp writes: > ちょっと別の見方になりますが、束縛するのは変数の他、オブジェクトがあり > ます。 > > value = ["a", ["b", "c"]] > > 最初の [] を束縛しているのは value という名前の変数ですが、そこに含ま > れる "a" や [] を束縛しているのは [] というオブジェクトですね。 > (より厳密には、下記のように最初の [] の束縛を value が持っているという感じ) 別のメールで書いた「計算環境と広義の束縛」のモデルで考えると単に「オブ ジェクトは環境である」で済んでしまって簡単だったりします (^^; `value' に結びつけられたオブジェクト `["a", ["b", "c"]]' の「中」では 1-"a" と 2-["b", "c"] という「結び付き」が有効な環境になっている. # ちょっと表記は不正確/適当.Hash 何かだったらとりあえず「環境」のキー # にシンボルだけでなく一般のオブジェクトを許してしまうように拡張.... # ちょっと無理ありすぎ (^^; > 紐モデルでいくと、束縛とは紐そのものであり、代入とは、その紐を変数に持 > たせる事で、変数名はその紐を持っている変数の名前ですね。 (略) > 代入 == 束縛とはちょっと違うと思います。 どっちかというと『広義の束縛』というのは「変数 - オブジェクト」という 結び付き全体ととらえているんですが.紐と変数とオブジェクト全部ひっくる めて. 「シンボルから紐を引っ張ってきてオブジェクトに結び付けること」を『広義 の束縛』と呼んでいるんで「代入 == 束縛」といってしまっても構わない.も ともとの主張は「『代入』なんて存在しない.あれは全て『広義の束縛』であ る」だし. オブジェクトが紐を握っていてもこれは変わらないわけです.普通のオブジェ クトの場合はシンボルが「インスタンス変数」という物になっているだけ. Array や Hash だとちょっと言明に困るけど,基本的に意味は同じ. そんな考えなので最初のメールはあんなになったのでした.「代入というから わからなくなるんだ」という考え方もちょっとあったし. -- 柳川和久 @ 東大阪市 . 大阪府 April 11, 1999 「きゃはははは誰だって十年たてば十歳くらい年とるわよねーっ」