在任何 lisp 中是否有一种形式可以“传播”父 sexp 中的列表?喜欢:
(+ (spread '(1 2 3))) -> (+ 1 2 3)
最佳答案
有两种方法可以做到这一点。哪个更好取决于你最终想要什么。
通常,您可以在`
(反引号)中使用,@
。 ,@
之后的形式被评估以产生一个列表,然后将其拼接到模板中:
* `(+ ,@'(1 2 3))
(+ 1 2 3)
* (eval `(+ ,@'(1 2 3)))
6
或者,如果你只是想调用一个函数,它的参数被打包在一个列表中,使用 apply
函数会更方便:
* (apply #'+ '(1 2 3))
6
关于lisp - 将列表传播到父级 sexp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015885/