Вот код:
(define (first lst)
(call/cc (lambda (exit)
(for-each
(lambda (x)
(call/cc (lambda (nested)
(exit (cons x nested)))))
lst))))
(define (main)
(let ((x (first '(h e l l o))))
(when (cons? x)
(display (car x))
((cdr x)))))
Этот код просто печатает: привет. Я не понимаю, что происходит, когда мы делаем:
((cdr x))
Чтобы быть точным, что именно делает Scheme, когда мы вызываем последнее выражение. Я имею в виду, что я понимаю, что мы возвращаемся во вложенном вызове /cc, но почему каждый раз он принимает новый символ вместо старого?
Я ожидал бесконечного вывода символа "h": hhhhhhh...
Спасибо за помощь!