common lisp如何转换rest参数列表

common lisp如何转换rest参数列表,rest,common-lisp,Rest,Common Lisp,我不熟悉common lisp,因此我的问题可能很简单,但我什么也没找到,可能我使用了错误的搜索词 我有以下问题: 我有一个函数,它对任意数量的参数进行特殊的加法。下一步是将该函数应用于任意数量的相同大小的列表,结果将是该大小的列表。 如果我打电话就行了 (地图车添加列表1列表2… 但是如果我必须定义一个函数 (取消列表添加(列表和休息列表) (mapcar#“添加列表”) 它不起作用,因为&rest列表现在是一个列表列表。函数加法需要使用所有参数作为序列进行调用,因此不可能进行递归调用 有人有

我不熟悉common lisp,因此我的问题可能很简单,但我什么也没找到,可能我使用了错误的搜索词

我有以下问题: 我有一个函数,它对任意数量的参数进行特殊的加法。下一步是将该函数应用于任意数量的相同大小的列表,结果将是该大小的列表。 如果我打电话就行了
(地图车添加列表1列表2…
但是如果我必须定义一个函数
(取消列表添加(列表和休息列表)
(mapcar#“添加列表”)
它不起作用,因为&rest列表现在是一个列表列表。函数加法需要使用所有参数作为序列进行调用,因此不可能进行递归调用

有人有解决办法吗?

请参阅

还请注意的值

显而易见的解决办法是:

(defun list-add (&rest lists)
  (apply #'mapcar #'addition lists))

我不确定我是否正确回答了这个问题,但请试一试

(defun list-add (list &rest lists)
  (mapcar (lambda (l) (apply #'addition list l))
          lists))

我不确定这是否一定比已经提供的答案更好或更差,但以下是我得出的结论:

 (defun list-add (first-required-list &rest other-lists)
  (let ((all-lists (cons first-required-list
                         other-lists)))
    (reduce (lambda (left-list right-list)
              (mapcar #'addition left-list right-list))
        all-lists)))