2.4 列表操作 (List Operations)

用函数 cons 来构造列表。如果传入的第二个实参是列表,则返回由两个实参所构成的新列表,新列表为第一个实参加上第二个实参:

  1. > (cons 'a '(b c d))
  2. (A B C D)

可以通过把新元素建立在空表之上,来构造一个新列表。上一节所看到的函数 list ,不过就是一个把几个元素加到 nil 上的快捷方式:

  1. > (cons 'a (cons 'b nil))
  2. (A B)
  3. > (list 'a 'b)
  4. (A B)

取出列表元素的基本函数是 carcdr 。对列表取 car 返回第一个元素,而对列表取 cdr 返回第一个元素之后的所有元素:

  1. > (car '(a b c))
  2. A
  3. > (cdr '(a b c))
  4. (B C)

你可以把 carcdr 混合使用来取得列表中的任何元素。如果我们想要取得第三个元素,我们可以:

  1. > (car (cdr (cdr '(a b c d))))
  2. C

不过,你可以用更简单的 third 来做到同样的事情:

  1. > (third '(a b c d))
  2. C