将列表分散到父性别中

Jor*_*nez 3 lisp scheme common-lisp

在任何口齿不清中都有一个表格可以在父母性别中"传播"一个列表吗?喜欢:

(+ (spread '(1 2 3))) -> (+ 1 2 3)
Run Code Online (Sandbox Code Playgroud)

dki*_*kim 8

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

通常,您可以使用,@内部`(反引号).,@将对以下表单进行求值以生成列表,然后将其拼接到模板中:

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

* (eval `(+ ,@'(1 2 3)))
6
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想调用包含在列表中的参数的函数,则使用该apply函数会更方便:

* (apply #'+ '(1 2 3))
6
Run Code Online (Sandbox Code Playgroud)