这如何正确表示给定的嵌套结构 [SICP]?我错过了什么?
How is this the correct representation of the given nested structure [SICP]? What am I missing?
SICPSection 2.2.2 (Hierarchical Structures)第二句:作者说((1 2) 3 4)
(三个元素的列表)可以由(cons (list 1 2) (list 3 4))
构造。
我认为(当然是错误的)它将构建 ((1 2) (3 4))
(两个元素),因为:
3
和 4
将包含在嵌套的 list
中,而不是在顶层 cons
中,并且
cons
构造一对item,pair表示2个元素而不是3个。
我哪里没看懂?
列表是一对链,以 cdr
为空列表的一对结束。
(list 3 4)
是两对,相当于
(cons 3 (cons 4 '()))
所以(cons (list 1 2) (list 3 4))
是3对,相当于
(cons (list 1 2) (cons 3 (cons 4 '())))
一般来说,如果您有一个列表 old-list
,您可以创建一个新列表,在前面添加一个新元素:
(cons new-element old-list)
如果你写了,你会得到你想要的
(list (list 1 2) (list 3 4))
SICPSection 2.2.2 (Hierarchical Structures)第二句:作者说((1 2) 3 4)
(三个元素的列表)可以由(cons (list 1 2) (list 3 4))
构造。
我认为(当然是错误的)它将构建 ((1 2) (3 4))
(两个元素),因为:
3
和4
将包含在嵌套的list
中,而不是在顶层cons
中,并且cons
构造一对item,pair表示2个元素而不是3个。
我哪里没看懂?
列表是一对链,以 cdr
为空列表的一对结束。
(list 3 4)
是两对,相当于
(cons 3 (cons 4 '()))
所以(cons (list 1 2) (list 3 4))
是3对,相当于
(cons (list 1 2) (cons 3 (cons 4 '())))
一般来说,如果您有一个列表 old-list
,您可以创建一个新列表,在前面添加一个新元素:
(cons new-element old-list)
如果你写了,你会得到你想要的
(list (list 1 2) (list 3 4))