如何返回普通Lisp中的最后一个值

时间:2018-07-16 03:40:37

标签: return lisp common-lisp

我知道values函数有助于控制REPL,但是我想从函数中显式返回最后一个值。 我设法找到的唯一接近的东西是

 (setf (values q a) (floor 1.5))

但是我只对它返回的0.5感兴趣。 我的问题是我怎么能不仅返回函数的最后一个值,而不仅仅是返回第二个值,而是第n个值(无论哪个值)?

1 个答案:

答案 0 :(得分:5)

没有标准运算符来获取最后一个值,甚至没有迭代值,但是您可以使用MULTIPLE-VALUE-CALL解决该问题:

(?m)(?!^)\"((?:(?!\").)*)\"

至少在SBCL上,标准MULTIPLE-VALUE-LIST似乎是通过这种方式实现的。