我正在阅读名为 the little schemer 的书。
在阅读之前,我已经读完了 SICP 的前三章。
我的问题是为什么第二个缺点必须是列表。
但是,(cons a b)
适用于所有值a和b以及
(car (cons a b))
= a
(cdr (cons a b))
= b
答案 0 :(得分:4)
cons
的第二个参数不是必然一个列表。如果您正在构建列表(正确或其他),那么它只是列表。如果cdr
单元格的cons
部分不是列表,则完全有效,例如,在构建关联列表时:
(define lookup-table (list (cons 'x 10) (cons 'y 20) (cons 'z 30)))
(assoc 'z lookup-table)
=> '(z . 30)
答案 1 :(得分:1)
并非所有Lisp的实现都允许使用非列表作为cons的第二个参数。例如,请参见https://scheme.cs61a.org/