Functional programming 在Scheme中进行函数调用时,会创建多少个环境帧
正如您所知,当有函数调用时,Scheme会为每个调用创建一个新位置,并将函数参数放置到这些位置中。 例如,当你Functional programming 在Scheme中进行函数调用时,会创建多少个环境帧,functional-programming,scheme,Functional Programming,Scheme,正如您所知,当有函数调用时,Scheme会为每个调用创建一个新位置,并将函数参数放置到这些位置中。 例如,当你 (define r 5) (define a 3) (define (f x) (* x r)) 将在后台创建: {E} (f a) {E} (f 3) {E1} (* x r) Final: 15 我的问题是执行此代码时创建了多少个位置,以及位置模型的外观如何: (define (f a) (define (g b) (* a b)) (g (g (+ a 1))))
(define r 5)
(define a 3)
(define (f x) (* x r))
将在后台创建:
{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
谢谢大家! 如果我正确理解您的问题,创建的环境框架如下所示:
- E0(顶级;上下文=
):f=#(定义(fa)…
- E1(父项=E0;上下文=
):a=3(F3)
- E2(父项=E1;上下文=
):g=#(定义(g b)…
- E3(父项=E2;上下文=
):lhs=3,rhs=1(+A1)
- E4(父级=E2;上下文=内部
):b=4(g…
- E5(父项=E4;上下文=
):lhs=3,rhs=4(*ab)
- E6(父项=E2;上下文=外部
):b=12(g…
- E7(父项=E6;上下文=
):lhs=3,rhs=12(*ab)