程序在第9章PLAI的第一个程序中执行了哪些步骤

时间:2012-08-17 09:11:02

标签: scheme interpreter racket plai

PLAI的第9章“理解递归”中,开头有一个示例阶乘:


(with (fac (fun (n)
                (if0 n 
                     1
                     (* n (fac (+ n -1))))))

在第90页,作者说:“在你继续阅读之前,请暂停片刻,仔细研究课程,在每个阶段写下环境,逐步通过翻译,如果你愿意,甚至可以运行程序,说服自己会发生这种错误。彻底了解错误对于遵循本节的其余部分至关重要。“   但我不确定我是否可以完全写下这些步骤,有人想帮我写下这些步骤吗?非常感谢提前!

2 个答案:

答案 0 :(得分:2)

让您的口译员为您打印出适合您的步骤。

(define (interp expr env)
  (displayln (list 'expr expr 'env env))
  (type-case CFAE/L expr

答案 1 :(得分:0)

阅读并运行第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))))

我可以手工写下这些步骤!谢谢每一个人!