我正在试图了解caddar在计划中的用途。我的笔记说它是汽车或cdr的嵌套版本,但它没有解释它是什么组合。这是一个代码及其输出:
=>caddar '((a b c) '(d e f)))
;Value: c
有人可以解释为什么输出是c吗?
谢谢
答案 0 :(得分:6)
这是(car (cdr (cdr (car '((a b c) '(d e f)))
。
您可以从名称中了解:a
和d
的顺序告诉您它的位置。对于每a
car
,您只需d
cdr
{{1}}。{/ p>
答案 1 :(得分:3)
汽车产生第一个元素。 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.
答案 2 :(得分:1)
你可以写汽车和司机。
把它想象成忽略'c'和'r'然后从右到左应用car / cdr
example:
car = first item
cdr = second and all subsequent items in list
cadr = second item