簡體   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