【问题标题】:Explanation of CAR, CDR, CADAR, etcCAR、CDR、CADAR等的解释
【发布时间】:2012-10-28 19:57:02
【问题描述】:

谁能给我一个基本的解释carcdr在Scheme中的变化?

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

我对这些的其他变体感到困惑,更具体地说是cadarcaddrcddr 等。

假设我有一个随机的例子:

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

(car X)
(cdr X)
(cadr X)
(cadar X)

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

【问题讨论】:

    标签: command scheme


    【解决方案1】:

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

    在第一个字母 ('c') 和最后一个字母 ('r') 之间,“a”表示“汽车”,“d”表示“cdr”。

    所以:

    • cadr 是“cdr 的车”,
    • cddr是cdr的cdr,
    • cadar 是“汽车的 cdr 的汽车”(因此参数必须是列表的列表),

    【讨论】:

    • 这真的很有帮助!我从没想过在 c 和 r 之间寻找,然后寻找 a 或 d。至少这对我来说是最有意义的。
    【解决方案2】:

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

    (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
    

    当您有多个ad 时,您可以从cadr 示例中看到,您可以倒着阅读。首先获取参数的cdr (d),然后从结果中获取car (a),依此类推,直到到达第一个。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多