【发布时间】:2019-03-19 08:42:58
【问题描述】:
我一直在阅读有关call-with-current-continuation 的内容,尤其是在 Scheme 中,并且阅读了许多网站上的各种文章。但是,我仍然不明白在使用call-with-current-continuation 时控制流是如何工作的。
例如,给定下面的附加代码,延续是如何调用的,无论何时调用,控制如何流过这个过程的主体?
(define call/cc call-with-current-continuation)
(define showit (lambda (a b)
(begin (display a) (display b) (display " "))))
(define f
(lambda (n)
(let ((p (call/cc (lambda (k) k))))
(begin
(showit ’f= n)
p))))
此外,当使用((f 2) (f 4)) 运行此过程时,它会导致无限循环,其模式如下:
谁能解释一下无限循环背后的原因? 注意:将 Drracket 与 R5RS 一起使用
【问题讨论】:
标签: scheme infinite-loop continuations callcc