补全:Env 的 find 和 set

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

补全:把环境打印出来

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

补全:重复 let 也报

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

函数是什么值

这门小语言(在 03/05 的基础上加了三样): let x = 1 ; x = x + 1 ; if ( c ) { … } else { … } while ( c ) { … } print e ;

开始练习 →

调用做了哪几步

eval_ 遇到 double ( total ),正确的步骤是【0】。

开始练习 →

return 怎么实现

函数体跑到 return x * 2 ;,要立刻结束整个函数体(哪怕它在 while 里三层深)。树遍历解释器最省事的做法是【0】。

开始练习 →

看调用栈

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

补全:定义函数

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

补全:调用

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →

补全:return

(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, bod

开始练习 →