【发布时间】:2012-08-20 10:44:40
【问题描述】:
我正在尝试在 Scheme R6RS 中实现 return 函数。我想要这样的东西:
(lambda ()
(do-some-job-before)
(return some-value)
(do-some-job-after))
执行(do-some-job-before),不执行(do-some-job-after)和some-value中的lambda函数的最终值。
我想我必须使用延续。我试过了:
(define return #f)
(call/cc (lambda (k)
(set! return k)))
但它不起作用;例如
(+ 2 (return 3)) ; -> 3 (and not 5 as I expected)
我该怎么做?
【问题讨论】:
标签: scheme continuations callcc