1

《小谋士》:

缺点法则
...
第二个参数 tocons必须是一个列表。

另外,《小计谋者》:

什么在(cons s l)
哪里s_ 'a
_l'b

没有答案。
为什么?

但是,如果我真的这样做了,(cons 'a 'b)'(a . b)知道它不是一个列表,但它是有效的 - 有一个答案 - 它是一对......

4

1 回答 1

1

这在方案中很常见——构建嵌入方案中的子语言。

弗里德曼为自己的需要构建了一种子语言(在最后一章中,它为他的语言构建了一个完整的解释器)。

为了他的目的,他构建了自己的数据结构,每个结构都有自己的公理。不要将方案的结构与他构建的方案中嵌入的结构混淆。他使用方案的运算符来构建他的结构,但他构建的语言公理与方案的公理不同——方案更大。在其他 lisps 或嵌入式 lisps 中,您会发现相同结构的其他公理。做一个比较,编译器GCC编译C,它把C识别为输入,它本身是用C写的,但是它在不同阶段实现的嵌入式语言比C本身复杂(可以看到C嵌入在GCC和GCC扩展它具有许多结构(除了不是 C 的中间语言),以方便编译器本身的编写)。

为了更好地理解这一点,我建议您阅读Anatomy of Lisp——它比 SICP 更老,但现在理解基础非常好。

于 2021-12-14T13:27:25.083 回答