lisp - 从 (values) lisp 获取第一个和第二个结果

标签 lisp

假设我将此代码发送给 clisp 解释器:

(values 'a 'b)
A ;
B

现在我希望记录此信息(使用 setf)并从结果中访问 A 和 B。 稍后我怎样才能访问那里的两个值? 我尝试这样做:

(setf result (values 'a 'b))
A

它只存储 'A 而不是 'B。我该怎么做?

最佳答案

如您所见,lisp 中的函数可以通过值形式返回多个值。如果要将值绑定(bind)到变量,可以使用多值绑定(bind)。示例

(multiple-value-bind (a b c) (values 1 2 3) (+ a b c))

1 将绑定(bind)到 a,2 将绑定(bind)到 b,3 将绑定(bind)到 c,因此评估表单的结果将为 6。如果您尝试将值表单设置为 var,则仅将使用第一个值。

关于lisp - 从 (values) lisp 获取第一个和第二个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702610/

相关文章:

apache - 如何使用 sbcl+restas+apache 运行网络应用程序?

lisp - 一个函数,它标识一个字符串在 lisp 中包含在另一个字符串中的次数

lisp - 在 lisp 列表中显示特定原子的不同列表

lisp - 删除每个子列表的第一个元素

lisp - 从 SLIME 运行时无法找到包,但从命令行可以

recursion - 用于嵌套循环的 Lisp 宏(或函数)

lisp - Racket 博士中的mcons

scheme - Racket 计划 - 成员(member)?功能难题

comparison - 为什么有这么多方法来比较是否相等?

list - Racket - 列表的输出内容