Permalink
Switch branches/tags
Nothing to show
Find file Copy path
19 lines (13 sloc) 752 Bytes

在运行我们自己实现的解释器时,我们解释器能够理解的变量与我们所使用的语言(本章即为 Scheme)是没有什么关系的。

所以我们不能用 宿主语言里面的函数来操作我们自定义解释器中的数据。

这个题目主要是弄明白,为什么直接将map作为基本过程安装到自己的元循环求值器中为什么不行?

设想下面的语句

(map + '(1 2) '(3 4))

我们的元循环求值器会展开如下的形式

(map '(procedure +) '(1 2) '(3 4))

显然这是不能运行的。

这里的关键点在于map作为一个高阶过程,其作为参数的过程,必须和 map 在同一解释器中定义,否则就会出现上面的展开后的错误。