有人可以给我一个关于Scheme 的变化car和cdr做什么的基本解释吗?
如果我是正确的,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 是"汽车司机的汽车"(因此参数必须是列表清单),最简单的方法是将其输入到方案解释器中:
(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或者d从cadr示例中可以看到,您可以向后阅读它.首先取参数的cdr(d),然后car从结果中取出(a),依此类推,直到你到达第一个.