Scheme 该计划包括哪些步骤';在第9章和第27章中执行;中国人民解放军第一个项目

Scheme 该计划包括哪些步骤';在第9章和第27章中执行;中国人民解放军第一个项目,scheme,interpreter,racket,plai,Scheme,Interpreter,Racket,Plai,在第9章“理解递归”的开头,有一个阶乘示例: (with (fac (fun (n) (if0 n 1 (* n (fac (+ n -1)))))) 在第90页,作者说“在继续阅读之前,请暂停片刻,仔细研究程序,通过解释器一步一步地写下每个阶段的环境,如果愿意,甚至运行程序,以使自己相信会发生此错误。彻底理解错误对于遵循本节剩余内容至关重要。“ 但是我不确定我是否能完整地写

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


(with (fac (fun (n)
                (if0 n 
                     1
                     (* n (fac (+ n -1))))))
在第90页,作者说“在继续阅读之前,请暂停片刻,仔细研究程序,通过解释器一步一步地写下每个阶段的环境,如果愿意,甚至运行程序,以使自己相信会发生此错误。彻底理解错误对于遵循本节剩余内容至关重要。“

但是我不确定我是否能完整地写下这些步骤,有人愿意帮我写下这些步骤吗?非常感谢!让你的口译员为你打印出这些步骤

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

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

我可以手工写下步骤!谢谢大家!

对不起,我不熟悉球拍语法(使用…等),但从第一眼看,如果这个函数得到一个负参数,它可能会下降到-MAXINT或平台支持的任何值。不,不是这样。问题与下溢无关。这是一个环境问题。