CAR,CDR,CADAR等的说明

Tar*_* 10 12 scheme command

有人可以给我一个关于Scheme 的变化carcdr做什么的基本解释吗?

如果我是正确的,car将返回列表中的第一项. cdr将返回不包含第一个元素的列表.

我对这些的其他变化,更具体的东西一样迷茫cadar,caddr,cddr,等.

说我有一个随机的例子:

define X '(a b (c d e))

(car X)
(cdr X)
(cadr X)
(cadar X)
Run Code Online (Sandbox Code Playgroud)

(car X)生产a,(cdr X)生产(b (c d e)),cadr生产b.但我不知道如何推断car/ cdr喜欢任何其他变体cadar.

did*_*erc 24

您可以通过解析它们的名称来推断这些函数的含义:

在第一个字母('c')和最后一个('r')之间,'a'表示"汽车",而'd'表示"cdr of".

所以:

  • cadr 是"cdr的车",
  • cddr 是cdr的cdr,
  • cadar 是"汽车司机的汽车"(因此参数必须是列表清单),
  • 等等


Ola*_*che 6

最简单的方法是将其输入到方案解释器中:

(car X)   -> a
(cdr X)   -> (b (c d e))
(cadr X)  -> (car (cdr X))       -> (car '(b (c d e))) -> b
(cadar X) -> (car (cdr (car X))) -> (car (cdr 'a))     -> error
Run Code Online (Sandbox Code Playgroud)

如果您有多个,a或者dcadr示例中可以看到,您可以向后阅读它.首先取参数的cdr(d),然后car从结果中取出(a),依此类推,直到你到达第一个.