Я не понимаю, как следующее не создает бесконечный цикл:
(define call/cc call-with-current-continuation) ; ccc alias
(define return #f) ; declare a global variable 'return'
(+ 1 (call/cc (lambda (cont) ; setup continuation with 'cont' as the exit procedure
(set! return cont) ; set global var 'return' to the exit procedure
1)))
(return 22) ; 23
Когда я вызываю (return 22)
, я возвращаюсь к продолжению, но с переданным значением 22 в качестве нового оцененного результата формы call/cc
. Не приведет ли это к тому, что (return 22)
будет оцениваться как следующий оператор, создавая тем самым бесконечный цикл?
Я знаю, что это не бесконечный цикл, но я не понимаю, почему это не так.