(list a b c)
等同于(cons a (list b c))
定义(或者,如果你继续转换,(cons a (cons b (cons c nil)))
.
所以,如果你写(cons 1 (list 3 4))
,这相当于(cons 1 (cons 3 (cons 4 nil)))
或(list 1 3 4)
.
现在,替换1
为(list 1 2)
,你得到:(cons (list 1 2) (cons 3 (cons 4 nil)))
或者等价(list (list 1 2) 3 4)
(或完全写出来(cons (cons 1 (cons 2 nil)) (cons 3 (cons 4 nil)))
).
这里的关键cons
是不是append
,也不是list
(平等地对待所有元素):在处理列表时它本质上是不对称的.左边的点保持元素("头部"); 正确的一个包含列表的其余部分("尾部").