1

我试图了解计划中的 caddar 是什么。我的笔记说它是 car 或 cdr 的嵌套版本,但没有解释它是什么组合。这是一个代码及其输出:

=>caddar '((a b c) '(d e f)))
;Value: c

有人可以解释为什么这里的输出是 c 吗?

谢谢

4

3 回答 3

6

(car (cdr (cdr (car '((a b c) '(d e f)))

你可以从名字上看出来:as和ds的顺序告诉你它是什么。对于每一个a你放一个car和永远d的一个cdr

于 2013-04-28T16:01:46.137 回答
3

car 产生第一个元素。cdr 产生其余部分。如果您想获取列表其余部分的第一个元素,您可以使用

(car (cdr '((a b c) (d e f)))) ;; value: '(d e f)

一种简写方式是将汽车和 cdr 混合在一起,如下所示:

(cadr '((a b c) (d e f))) ;; value: '(d e f)

请注意,cadr 中的 'a' 和 'd' 与原始 (car (cdr ...)) 中的顺序相同

所以 caddar 是以下的简写:

(car (cdr (cdr (car '((a b c) (d e f)))))) ;; value: c
(caddar '((a b c) (d e f))) ;; same as above, but with less typing.
于 2013-04-28T16:05:17.417 回答
1

你可以组成汽车和cdr。
将其视为忽略“c”和“r”,然后从右到左应用 car/cdr。
示例

car  = first item
cdr  = second and all subsequent items in list
cadr = second item
于 2013-04-28T16:01:18.873 回答