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] |
Per Bothner <bothner@cygnus.com> writes: > So something like this should work: > > (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) ...))) > (routine1)) > > Admittedly, this glosses over some of the difficult parts, > such as how saved-continuation is initialized (to run routine2). > > What am I missing? How about (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) ...))) (set! saved-continuation (lambda (init) (routine2))) (routine1)) ?