我一直在阅读关于 call-with-current-continuation
,尤其是在Scheme中,并阅读了许多网站上的各种文章 . 但是,我仍然不明白使用 call-with-current-continuation
时控制流如何工作 .
例如,给定下面附加的代码,如何调用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