如何编写一个返回多个值的常见lisp函数

时间:2014-07-18 05:57:21

标签: common-lisp

我在lisp http://common-lisp.net/language.html#sec-1做了一个啧啧 我想知道如何写这个函数:

(my-floor 1.3) 
 => 1 0.3

1 个答案:

答案 0 :(得分:8)

使用values

(defun foo (x y)
  (values x y (+ x y) (cons x y)))

尝试功能:

> (foo 2 pi)
2 ;
3.1415926535897932385L0 ;
5.1415926535897932383L0 ;
(2 . 3.1415926535897932385L0)

将返回的值与multiple-value-bind一起使用:

(multiple-value-bind (a b sum pair) (foo 1 2)
  (list a b sum pair))
==> (1 2 3 (1 . 2))

(setf values)

另见values function in Common Lisp