这是代码:
(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 究竟做了什么。我的意思是我明白我们回到嵌套的 call/cc 但是为什么每次都需要一个新字符而不是旧字符?
我期待和无限打印字符“h”:hhhhhhh ...
谢谢您的帮助!