home *** CD-ROM | disk | FTP | other *** search
- ; Versuche zur Continuation function
-
- (defun fk (n)
- (if (zerop n) 1 (* n (fk (- n 1))))
- )
- ; normale Fakultät
-
- (defun fak (n &optional (cont #'identity))
- (if (zerop n)
- (funcall cont 1)
- (fak (- n 1) #'(lambda (u) (funcall cont (* n u))))
- ) )
- ; Fakultät mit Continuation Function:
- ; (fak n cont) ergibt (funcall cont (fk n))
-
-
- ; Zum Wesen der Continuation Function:
- ; So eine Funktion ist in der Lage, noch auszuführende Anweisungen mitsamt
- ; korrektem Einsprungpunkt und den dazugehörigen korrekten statischen
- ; Variablenbindungen aufzunehmen. Die Verschachtelung dieser CF's entspricht
- ; genau dem Stackaufbau beim gewöhnlichen Abarbeiten.
- ; Eine CF IST also ein Stack. Er kann abgespeichert werden und wieder zur
- ; Ausführung gebracht werden. Damit hat man einen Mechanismus zum kontrol-
- ; lierten Umschalten zwischen Kontexten.
-
-