This is the mail archive of the guile@cygnus.com mailing list for the guile project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Mikael Djurfeldt <mdj@nada.kth.se> writes:
Sorry, I'm tired. A continuation was required. This version has the
advantage that it's safe for both routine1 and routine2 to "fall off
the edge".
(let
((saved-continuation ...)
(suspend (lambda (value)
;; swap current continuation and saved-continuation
(call/cc (lambda (k)
(let ((ksaved saved-continuation))
(set! saved-continuation k)
(ksaved value))))))
(routine1 (lambda () ... (suspend x) ...))
(routine2 (lambda () ... (suspend y) ...)))
(call/cc (lambda (return)
(call/cc (lambda (k)
(set! saved-continuation k)
(return (routine1))))
(routine2))))