05/07/05 17:26:14
>>514の続き(ここまで)
ソースコードは末尾再帰になっているので、
a_procのスコープは呼び出しにかかわらず単一であると考えると、そのスコープ内で
2>~3>で表示されている最初の束縛関係が、一度5>~6>のように変更されています。
ところが、18:~22:で内部手続きを作成すると、そこでは、
変更されたの束縛関係(5>~6>)ではなく最初の束縛関係(7>~8>)に戻っています。
R5RS 4.1.4 Procedures には
The environment in effect when the lambda expression was evaluated is
REMEMBERED as part of the procedure.
とあります。
この「REMEMBER」という語は「そのScopeへの参照を記憶する」ことを意味すると
理解していたのですが、上の実験結果を見る限り
「そのScopeを元に作成した複製を保持する」と解釈すべきなのでしょうか?
全く思い違いをしているかもしれません。ご指摘ください。