我有一个递归代码,需要在条件已满时终止它。我有能力在条件出现时显示列表,但是在堆栈上有另一个不需要处理的调用不允许我返回列表。

最佳答案

西尔维斯特解的一种变体:

(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)。

10-06 00:33