1

这是代码:

(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 ...

谢谢您的帮助!

4

0 回答 0