小编MRm*_*lub的帖子

如何在 Common Lisp 中分解或拼接列表?

假设我有一个带有 3 个参数的函数 Foo。例如,Foo 将这 3 个数字相加。

(defun Foo (a b c) 
  (+ a b c)
Run Code Online (Sandbox Code Playgroud)

然后我就有了这 3 个值的列表。有没有办法解决这个列表,以便每个值都绑定到参数?

(setf list (list 1 2 3))
> (1 2 3)
(Foo (dissolve list))
> 6
Run Code Online (Sandbox Code Playgroud)

我想到的唯一选择是使用宏,但后来我收到错误,@ 不能在反引号之后。

(defmacro dissolve (list)
  `,@list)
Run Code Online (Sandbox Code Playgroud)

我知道,答案之一是在 Foo 函数中使用 &rest,但我不想这样做。我只是想知道是否有这样的构造可以从函数外部修复这个问题。

lisp common-lisp

2
推荐指数
1
解决办法
193
查看次数

标签 统计

common-lisp ×1

lisp ×1