3.7 映射函数 (Mapping Functions)

Common Lisp 提供了数个函数来对一个列表的元素做函数调用。最常使用的是 mapcar ,接受一个函数以及一个或多个列表,并返回把函数应用至每个列表的元素的结果,直到有的列表没有元素为止:

  1. > (mapcar #'(lambda (x) (+ x 10))
  2. '(1 2 3))
  3. (11 12 13)
  4. > (mapcar #'list
  5. '(a b c)
  6. '(1 2 3 4))
  7. ((A 1) (B 2) (C 3))

相关的 maplist 接受同样的参数,将列表的渐进的下一个 cdr 传入函数。

  1. > (maplist #'(lambda (x) x)
  2. '(a b c))
  3. ((A B C) (B C) (C))

其它的映射函数,包括 mapc 我们在 89 页讨论(译注:5.4 节最后),以及 mapcan 在 202 页(译注:12.4 节最后)讨论。