什么是计划中的caddar

时间:2013-04-28 15:56:15

标签: scheme

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

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

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

谢谢

3 个答案:

答案 0 :(得分:6)

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

您可以从名称中了解:ad的顺序告诉您它的位置。对于每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