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

标签 lisp racket multiple-return-values

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

(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,它在这里并不适用。

最佳答案

你想要define-values , 等同于 let-values 的定义。

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

关于lisp - 如何使用 define 将 Racket 的多个返回值绑定(bind)到全局变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29188670/

相关文章:

macros - Common Lisp 反引号/反引号 : How to Use?

recursion - Lisp 递归返回 NIL

function - 以某种方式添加括号的 Lisp 函数

戈朗 : Can you type a returned interface{} in one statement?

lisp - 逐步构建一个大文本 block ,然后将其写入文件

list - 在Scheme中,如何比较两个参数并在未给出时返回 false

lisp - 将表达式的结果分配给变量

python - Racket :相当于 np.zeros((n, m))

python - 函数返回多个值是pythonic吗?

go - 如何将多个返回值传递给可变参数函数?