(+ 2 (let/cc cont
(begin
(set! global-cont cont)
3)))
5
global-cont
#<continuation>
(global-cont 5) ; global-cont: (+ 2 _)
7
我知道整个区块(+ 2 ... 3)))
是一个延续。但为什么global-cont
也是一个延续呢?我试着查看let/cc
文档,但很难理解。
在此表达式中:
(let/cc cont body ...)
cont
是(+ 2 _)
的延续,在体内你正在这样做:
(set! global-cont cont)
所以基本上,你把cont
分配给global-cont
,使它也是一个连续。
我不同意"整个块(+2…(是一个延续"。如果"continuation"的意思是"由let/cc或其等价物(call/cc等(捕获的值",那么整个块就不是continuation。
所以:cont
是一个延续,因为你用let/cc
捕捉到了它。global-cont
是一个延续,因为您为它分配了一个延续。