我遇到了一些我无法理解的事情。
#lang scheme
(define cc #f)
(define (val!)
(call/cc
(lambda (k)
(set! cc k)
0)))
(* 10 (val!))
(cc 100)
到目前为止,一切都很好; 的延续(* 10 [])
存储在cc
,如果我们调用(cc 100)
,我们1000
会在 REPL 中看到预期的结果。
但我尝试的下一件事是将变量定义为运行延续的结果:
(define x (cc 20))
我200
在 REPL 中看到了结果,但x
没有得到定义。
存储在其中的延续是否cc
包括其返回,以便调用define
从不返回,而评估是 的结果(* 10 val)
?到底是怎么回事?