如何使用define将Racket的多个返回值绑定到全局变量名?

时间:2015-03-21 22:13:07

标签: lisp racket multiple-return-values

给定一个返回一个值的简单函数,我可以使用define将其返回值绑定到一个名称

(define (foo) 1)
(define bar (foo))

但是,当函数使用values返回多个值时,似乎无法做到这一点。

(define (baz) (values 2 3))
(define quux (baz))
  ; define-values: result arity mismatch;
  ;  expected number of values not received
  ;   expected: 1
  ;   received: 2
  ;   from: 
  ;   in: definition of quux
  ;   values...:
  ;    2
  ;    3

我查看了文档,但与values相关的唯一内容是let-values,这里并没有真正适用。

1 个答案:

答案 0 :(得分:2)

您需要define-values,其定义相当于let-values

(define (baz) (values 2 3))
(define-values (foo bar) (baz))