将列表分散到父性别中

时间:2012-08-18 04:37:53

标签: lisp scheme common-lisp

任何口齿不清的表格是否可以在父母性别中“传播”一个列表?像:

(+ (spread '(1 2 3))) -> (+ 1 2 3)

1 个答案:

答案 0 :(得分:8)

有两种方法可以做到这一点。哪个更好取决于你最终想要什么。

通常,您可以在,@内使用`(反引号)。评估,@后面的表单以生成一个列表,然后将其拼接到模板中:

* `(+ ,@'(1 2 3))
(+ 1 2 3)

* (eval `(+ ,@'(1 2 3)))
6

或者,如果你只是想调用一个包含在列表中的参数的函数,那么使用apply函数会更方便:

* (apply #'+ '(1 2 3))
6