如您所知,当有函数调用时,Scheme会为每个调用创建一个新位置,并将函数参数放入位置。 例如,当你有
(define r 5)
(define a 3)
(define (f x) (* x r))
following locations model是在后台创建的:
{E} (f a)
{E} (f 3)
{E1} (* x r)
Final: 15
我的问题是,当您执行此代码时,会创建多少个位置以及位置模型的外观:
(define (f a)
(define (g b) (* a b))
(g (g (+ a 1))))
(f 3) -> 36
谢谢!
答案 0 :(得分:2)
如果我理解你的问题,创建的环境框架如下:
int
):f =#< procedure> (define (f a) ...)
):a = 3 (f 3)
):g =#< procedure> (define (g b) ...)
):lhs = 3,rhs = 1 (+ a 1)
):b = 4 (g ...)
):lhs = 3,rhs = 4 (* a b)
):b = 12 (g ...)
):lhs = 3,rhs = 12