【发布时间】:2018-09-13 09:15:01
【问题描述】:
来自 R5RS 标准:
Values might be defined as follows:
(define (values . things)
(call-with-current-continuation
(lambda (cont) (apply cont things))))
我对此的第一个解释是,像(+ (values 1 2)) 这样的表达式等价于(apply + '(1 2)),并且会产生结果3。但是,根据我的测试,这种解释是不正确的。这是我对上面代码的解释:values 是一个接受任意数量参数的函数,捆绑到一个名为things 的列表中。然后,使用列表things“unbundled”调用当前延续(使用values 的地方)。
我错过了什么?上面的例子(+ (values 1 2)) 根据我使用的解释器给出一个错误或1。
【问题讨论】:
-
我认为您缺少的是
+不是延续。
标签: scheme lisp apply r5rs callcc