我一直在阅读关于 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)) 运行此过程时,它会导致无限循环,模式如下:

enter image description here

谁能解释无限循环背后的原因?注意:使用Drracket和R5RS