[Back]

3.2 求值的环境模型

3.9

对于递归版本,我们会先创建F-6环境 x:6

然后是 F-5环境 x;5……

每个环境都指向了全局环境。

对于迭代版本,我们会创建一个Fac环境,F x:6

然后创建一个Fac-iter环境

Fact-iter: 1 counter:1 max-count: 6

……

同样这些环境都指向全局环境。

可以看到,递归并不会使得环境成为一条链的指向。

3.10

多了一层lambda实际上也就是多了一层环境,所以我们只需要创建一个环境指向make-withdraw的环境,然后创建一个balance的约束,并在这个之上进一步保存局部变量即可。但实际上,这里多了一层无用的环境,initial-amount对整个的系统设计并没有任何贡献。

3.11

acc的状态会保存在make-account 50创建的环境里,指向了dispatch这个lambda函数。

当我们给它传入参数时,就会另创建一个环境,并将m做约束。

环境中的withdraw和deposit是共享的。