Wie funktioniert das Yin-Yang-Puzzle?

Ich versuche, die Semantik von call / cc in Scheme zu verstehen, und die Wikipedia-Seite in den Fortsetzungen zeigt das Yin-Yang-Rätsel als Beispiel:

(let* ((yin
         ((lambda (cc) (display #\@) cc) (call-with-current-continuation (lambda (c) c))))
       (yang
         ((lambda (cc) (display #\*) cc) (call-with-current-continuation (lambda (c) c)))) )
    (yin yang))

Es sollte @ ausgeb@*@**@***@****@..., aber ich verstehe nicht warum; Ich würde erwarten, dass es @ ausgi@*@********* ...

Kann jemand im Detail erklären, warum das Yin-Yang-Puzzle so funktioniert, wie es funktioniert?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage