在PLAI的chapter9“理解递归”中,开头有一个阶乘示例:
(with (fac (fun (n)
(if0 n
1
(* n (fac (+ n -1))))))在第90页,作者说:“在你继续阅读之前,请暂停片刻,仔细研究程序,写下每个阶段的环境,通过解释器一步一步地写下来,如果你愿意,甚至可以运行程序,以说服自己这个错误将会发生。彻底理解错误对于后面的章节是至关重要的。”
但是我不确定我能把这些步骤完整地写下来,有人愿意帮我把这些步骤写下来吗?提前谢谢你!
发布于 2012-08-18 17:25:37
让你的解释器为你打印出步骤。
(define (interp expr env)
(displayln (list 'expr expr 'env env))
(type-case CFAE/L expr发布于 2012-08-19 12:22:12
在阅读并运行了第10章的代码之后,独立执行了上述程序的中间步骤,例如
(interp (if0 (id 'n) (num 1) (mult (id 'n) (app (id 'fac) (sub (id 'n) (num 1)))))
(aSub 'n
(numV 2)
(closureV-env (lookup 'fac new-env))))我可以手写这些步骤!感谢每一个人!
https://stackoverflow.com/questions/12002940
复制相似问题