因此,我试图call/cc
在 Scheme 中弄清楚这一切。以下是我正在使用的代码:
(+ 1 (call/cc
(lambda (k)
(if (number? k)
(call/cc (lambda (k) (k (- 1 k))))
(k 4)))))
所以在这里我们开始在第一个括号中添加两个参数。1
其余的我们必须评估,因为急切的评估。所以我们有一个call/cc
接受一个参数的函数,一个函数,它call/cc
通过调用来评估。(我说的对吗?)同时它包含了到目前为止在我们的第一个括号中发生的其余部分,即(+ 1 [])
,它是“延续”。(我说的对吗?)所以我们k
用我刚才描述的延续来调用 lambda (+ 1 [])
,. 然后在函数中询问这是否是一个数字,它不是并且执行“then”。我在这里“迷路”了,这一秒call/cc
做什么?调用什么(k 4)
来使整个事情评估为5
?