Scheme解释器执行自身定义的阶乘结果[#58]
run-inside将Scheme解释器计划的完整定义放入外层解释器,并在该环境中调用run。外层解释器处理内层解释器的代码,内层处理用户程序:
example. Scheme 自解释的阶乘结果为 120[mce-self-factorial]
(run-inside '((define (factorial n)
(if (= n 0) 1 (* n (factorial (- n 1)))))
(factorial 5)))⇒ 120 · checked
特殊形式、闭包应用和环境查找都经过解释器;数值、列表和可变框架原语仍由宿主提供。这是本子集的一层自解释,不是完整Scheme兼容性或独立运行时的自举。