我试图了解计划中的 caddar 是什么。我的笔记说它是 car 或 cdr 的嵌套版本,但没有解释它是什么组合。这是一个代码及其输出:
=>caddar '((a b c) '(d e f)))
;Value: c
有人可以解释为什么这里的输出是 c 吗?
谢谢
我试图了解计划中的 caddar 是什么。我的笔记说它是 car 或 cdr 的嵌套版本,但没有解释它是什么组合。这是一个代码及其输出:
=>caddar '((a b c) '(d e f)))
;Value: c
有人可以解释为什么这里的输出是 c 吗?
谢谢
是(car (cdr (cdr (car '((a b c) '(d e f)))
。
你可以从名字上看出来:a
s和d
s的顺序告诉你它是什么。对于每一个a
你放一个car
和永远d
的一个cdr
。
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.
你可以组成汽车和cdr。
将其视为忽略“c”和“r”,然后从右到左应用 car/cdr。
示例:
car = first item
cdr = second and all subsequent items in list
cadr = second item