为什么第二个缺点必须是一个列表

时间:2012-11-26 14:07:18

标签: scheme the-little-schemer

我正在阅读名为 the little schemer 的书。

在阅读之前,我已经读完了 SICP 的前三章。

我的问题是为什么第二个缺点必须是列表

但是,(cons a b)适用于所有值a和b以及

(car (cons a b)) = a

(cdr (cons a b)) = b

2 个答案:

答案 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/