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

时间:2014-11-02 18:08:59

标签: lisp

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

  

(值'a'b)
  一个 ;
  乙

现在我想记录这些信息(使用setf)并从结果中访问A和B. 我怎么能在以后访问这两个值? 我试过了:

  

(setf结果(值'a'b))
  甲

它只存储'A而不是'B.我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

如您所见,lisp中的函数可以通过值表单返回多个值。如果要将值绑定到变量,可以使用multiple-value-bind。实施例

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

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