我有一个递归代码,需要在条件已满时终止它。我有能力在条件出现时显示列表,但是在堆栈上有另一个不需要处理的调用不允许我返回列表。
最佳答案
西尔维斯特解的一种变体:
(define (example n)
(call-with-current-continuation
(lambda (return)
(let loop ([n 0])
(if (= n 5) ; done
(return 'the-result)
(loop (+ n 1)))))))
(example 10)
以这种方式使用continuation允许使用escape continuation而不是带有
call/ec
的完整continuation(如果您的实现具有escape continuation)。