Racket 如何知道表达式是否是延续? (+2(let/cc cont (开始 (设置!全局控制) 3))) 5. 全球控制 # (全球续5);全球控制:(+2) 7.

Racket 如何知道表达式是否是延续? (+2(let/cc cont (开始 (设置!全局控制) 3))) 5. 全球控制 # (全球续5);全球控制:(+2) 7.,racket,continuations,Racket,Continuations,我知道整个块(+2…3))是一个延续。但是为什么global cont也是一个延续呢?我试图检查let/cc,但很难理解。在这个表达式中: (+ 2 (let/cc cont (begin (set! global-cont cont) 3))) 5 global-cont #<continuation> (global-cont 5) ; global-cont: (+ 2 _) 7 cont是一个延续(+2),你在身体里这样做: (let/cc

我知道整个块
(+2…3))
是一个延续。但是为什么
global cont
也是一个延续呢?我试图检查
let/cc
,但很难理解。

在这个表达式中:

(+ 2 (let/cc cont
    (begin
     (set! global-cont cont)
     3)))
5

global-cont
#<continuation>

(global-cont 5) ; global-cont: (+ 2 _)
7
cont
是一个延续
(+2)
,你在身体里这样做:

(let/cc cont body ...)
因此,基本上您将
cont
赋值给
global cont
,使其也成为一个延续。

在此表达式中:

(+ 2 (let/cc cont
    (begin
     (set! global-cont cont)
     3)))
5

global-cont
#<continuation>

(global-cont 5) ; global-cont: (+ 2 _)
7
cont
是一个延续
(+2)
,你在身体里这样做:

(let/cc cont body ...)

因此,基本上,您将
cont
分配给
global cont
,使其也是一个延续。

我想我不同意“整个块(+2…)是一个延续”。如果“continuation”是指“let/cc或其等价物(call/cc等)捕获的值”,则整个块不是continuation


所以:
cont
是一个延续,因为您使用
let/cc
捕获了它
global cont
是一个continuation,因为您为它指定了一个continuation。

我想我不同意“整个块(+2…)是一个continuation”。如果“continuation”是指“let/cc或其等价物(call/cc等)捕获的值”,则整个块不是continuation

所以:
cont
是一个延续,因为您使用
let/cc
捕获了它<代码>全局cont是一个延续,因为您为它指定了一个延续