05/07/05 23:34:23
>>522
疑問に思ったのがこのコードを実行してみてだったので、
そのまま質問してしまいました。
末尾再帰は直接関係ありません。
手続きを定義するときにその手続きは定義時の環境を「覚えて」いて、
手続きを呼び出したときにはその環境内で手続きが評価される、と
理解しています。
514の質問の意図は、作られた手続きが保持しているものが
(1)手続き作成時の環境そのもの(シンボルテーブルなど環境内の要素を含む)
なのか、
(2)手続き作成時の環境への参照またはポインタ
でよいのか、についての答えをいただきたいということでした。
(2)でよいと思っていたのですが、もしそうだとすると、>>514の例では
手続き18:の環境は手続き2:と共有されるために、束縛関係が書き換えらてしまい、
実際の結果の説明ができません。
ということは、手続き定義時には、そのときの環境が複製され、
定義された手続き固有の(他の手続きなどからアクセスできない)
環境となって保持される、ということでよいのでしょうか。