Бесконечный цикл при использовании вызова с текущим продолжением в схеме - PullRequest
0 голосов
/ 15 октября 2018

Я читал о call-with-current-continuation, особенно в Схеме, и читал различные статьи на многих сайтах.Тем не менее, я до сих пор не понимаю, как работает поток управления при использовании 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)), это приводит к бесконечному циклу с шаблоном, подобным следующему:

enter image description here

Кто-нибудь может объяснить причину бесконечного цикла?Примечание: использование Drracket с R5RS

...