我怎么知道一个表达式是否是一个延续?
How do I know whether an expression is a continuation?
(+ 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
document 我试着去查了一下,但是很难理解。
在这个表达式中:
(let/cc cont body ...)
cont
是一个 continuation (+ 2 _)
,在正文中你这样做:
(set! global-cont cont)
所以基本上你是将 cont
分配给 global-cont
,使其成为一个延续。
我想我不同意"the whole block (+ 2 ...) is a continuation"。如果 "continuation" 你的意思是 "a value captured by let/cc or its equivalent (call/cc etc.)," 那么整个块不是一个延续。
所以:cont
是一个延续,因为你用 let/cc
捕获了它。 global-cont
是延续,因为您为其分配了延续。
(+ 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
document 我试着去查了一下,但是很难理解。
在这个表达式中:
(let/cc cont body ...)
cont
是一个 continuation (+ 2 _)
,在正文中你这样做:
(set! global-cont cont)
所以基本上你是将 cont
分配给 global-cont
,使其成为一个延续。
我想我不同意"the whole block (+ 2 ...) is a continuation"。如果 "continuation" 你的意思是 "a value captured by let/cc or its equivalent (call/cc etc.)," 那么整个块不是一个延续。
所以:cont
是一个延续,因为你用 let/cc
捕获了它。 global-cont
是延续,因为您为其分配了延续。