Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
是否有任何 lisp 中的表格可以“传播”父 sexp 中的列表?像:
(+ (spread '(1 2 3))) -> (+ 1 2 3)
有两种方法可以做到这一点。哪个更好取决于你最终想要什么。
通常,您可以使用,@inside `(反引号)。下面的形式,@被评估以产生一个列表,然后将其拼接到模板中:
,@
`
* `(+ ,@'(1 2 3)) (+ 1 2 3) * (eval `(+ ,@'(1 2 3))) 6
或者,如果您只想调用一个函数,其参数打包在一个列表中,使用该apply函数会更方便:
apply
* (apply #'+ '(1 2 3)) 6