繁体   English   中英

方案中的延续示例

[英]Example of Continuations in Scheme

我在理解教授用作示例的这段代码时遇到了一些麻烦:

(define saved-cont #f)  

(define (test-cont)
     (let ((x 0))
      (call/cc
       (lambda (k)     
        (set! saved-cont k))) 

      (set! x (+ x 1))
      (display x)
      (newline)))

如果我们第一次运行(test-cont)k包含什么?

注意:我正在使用R6RS方案。

call/cc使用当前延续作为其唯一参数来调用给定函数。 因此,这里的k是当前的延续。 当您使用值调用它时, call/cc将返回您提供的值。 (但是,由于在上面的代码中没有使用call/cc的返回值,并且由于R6RS在这种情况下允许零值返回,因此您可以不带任何参数地调用saved-cont ,并且仍然可以做您期望的事情。 )

在这里,基本上,每次调用(saved-cont)call/cc下面的代码将再次运行。 因此, x将递增,并显示其新值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM