《小谋士》:
缺点法则
...
第二个参数 tocons
必须是一个列表。
另外,《小计谋者》:
什么在
(cons s l)
哪里s
_'a
_l
'b
没有答案。
为什么?
但是,如果我真的这样做了,(cons 'a 'b)
我'(a . b)
知道它不是一个列表,但它是有效的 - 有一个答案 - 它是一对......
《小谋士》:
缺点法则
...
第二个参数 tocons
必须是一个列表。
另外,《小计谋者》:
什么在
(cons s l)
哪里s
_'a
_l
'b
没有答案。
为什么?
但是,如果我真的这样做了,(cons 'a 'b)
我'(a . b)
知道它不是一个列表,但它是有效的 - 有一个答案 - 它是一对......
这在方案中很常见——构建嵌入方案中的子语言。
弗里德曼为自己的需要构建了一种子语言(在最后一章中,它为他的语言构建了一个完整的解释器)。
为了他的目的,他构建了自己的数据结构,每个结构都有自己的公理。不要将方案的结构与他构建的方案中嵌入的结构混淆。他使用方案的运算符来构建他的结构,但他构建的语言公理与方案的公理不同——方案更大。在其他 lisps 或嵌入式 lisps 中,您会发现相同结构的其他公理。做一个比较,编译器GCC编译C,它把C识别为输入,它本身是用C写的,但是它在不同阶段实现的嵌入式语言比C本身复杂(可以看到C嵌入在GCC和GCC扩展它具有许多结构(除了不是 C 的中间语言),以方便编译器本身的编写)。
为了更好地理解这一点,我建议您阅读Anatomy of Lisp
——它比 SICP 更老,但现在理解基础非常好。