【发布时间】:2010-12-13 17:18:12
【问题描述】:
我已阅读有关返回和使用多个值的值和定义值等函数的文档。我明白他们在做什么。我不清楚你什么时候想要使用这样的东西。
何时构建单个值列表并使用该单个值列表而不是坏/不可能?
【问题讨论】:
标签: scheme
我已阅读有关返回和使用多个值的值和定义值等函数的文档。我明白他们在做什么。我不清楚你什么时候想要使用这样的东西。
何时构建单个值列表并使用该单个值列表而不是坏/不可能?
【问题讨论】:
标签: scheme
define-values 是一种方便,可让您直接将变量绑定到表达式的结果。它为您节省了一些输入,因为您不必显式解压缩列表。我不认为在某些情况下建立一个单一的值列表是不好的或不可能的。事实上,这将比 define-values 更便携。
【讨论】:
Here 是我关于该主题的原始帖子;它复制在下面。
在comp.lang.scheme 的this 线程中讨论了返回多个值的方法。 R6RS 中貌似有 3 种解决方案:
(import (rnrs))
; let-values + values
(define (foo1)
(values 1 2 3))
(let-values (((a b c) (foo1)))
(display (list a b c))
(newline))
; cps
(define (foo2 k)
(k 1 2 3))
(foo2 (lambda (a b c)
(display (list a b c))
(newline)))
; list
(define (foo3)
(list 1 2 3))
(let ((result (foo3)))
(display result)
(newline))
根据 Aziz 和 Aaron 的观点;您应该使用向读者传达最多信息的方法。
【讨论】: