补全:递归
(每道题开头都有同一段:这门语言的 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 )
调用时看哪个环境
调用一个函数时,函数体里的变量沿哪条链找?【0】
计数器
小盒子离开了出生的那间房 走多远都有一根线拴着那间房 (每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数
词法还是动态
(每道题开头都有同一段:这门语言的 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
补全:数一数链有几层
(每道题开头都有同一段:这门语言的 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
运行时错误和编译时错误
05 的检查器在跑之前报「类型不匹配」;本条的解释器在跑的时候报「除以零」。除以零没法在跑之前报,是因为【0】。