【发布时间】:2013-12-31 15:30:12
【问题描述】:
似乎为了在 Racket 中使用多个返回值,我必须使用define-values 或使用(call-with-values (thunk (values-expr)) list) 将它们收集到一个列表中。在后一种情况下,如果必须将它们收集到一个列表中,为什么有人会选择返回多个值而不是一个列表?此外,这两种方法都非常冗长且难以处理大多数代码。我觉得我一定误解了关于多重返回值的一些非常基本的东西。就此而言,我该如何编写一个接受多个返回值的过程?
【问题讨论】:
-
是的,我提到了身体中的那些形式,但我的问题是那些真的是我们所拥有的最好的吗?如果是这样,当一个普通的旧列表可以更好、更轻松地完成相同的事情时,为什么我们甚至有多个返回值?而且我仍然不知道如何定义一个过程接受返回多个值的结果。
-
您将此过程定义为带有多个参数的简单 lambda,并通过 call-with-values 调用它:
(call-with-values (lambda() (values 1 2)) (lambda(a b) ....))。 -
哇...这就像....正是我在谷歌上搜索的内容。好工作!另外,整洁,我不知道
thunk函数。我一直在制作自己的 lambdas
标签: racket