方案中对和列表之间的连接

Connection between pairs and list in scheme

我正在尝试了解方案中的对和列表之间的联系。我们来看看下面的scheme表达式:

(((a) (b)) ((c) (d)))

我想统计上面表达式中的对数,所以我按如下方式构造:

(list (list (list 'a) (list 'b)) (list (list 'c) (list 'd)))
 => (((a) (b)) ((c) (d)))

(list 'a),(list 'b),(list 'c),(list 'd) - 4 pairs
(list (list 'a) (list 'b)) and (list (list 'c) (list 'd)) - 2 pairs
(list (list (list 'a) (list 'b)) (list (list 'c) (list 'd))) - 1 pair

到目前为止,7 对。应该是10 我在这里错过了什么?

简单事实:包含 n 个元素的适当列表有 n 对:

那么,列表中的元素总数是多少?

(a) 这样的列表只有一个元素,所以它们有一对。你有四个,所以你有 4 对。

(thing1 thing2) 这样的列表有两个元素,所以它们有两对。你有三个(两个内部包含列表,如 (a),一个外部),所以你有 3 x 2 = 6 个其他对。

你总共有 6 + 4 = 10 对。