Next: Eval, Previous: Promises, Up: Standards Support [Contents][Index]
This facility is a generalization of Common LISP unwind-protect
,
designed to take into account the fact that continuations produced by
call-with-current-continuation
may be reentered.
The arguments thunk1, thunk2, and thunk3 must all be procedures of no arguments (thunks).
dynamic-wind
calls thunk1, thunk2, and then
thunk3. The value returned by thunk2 is returned as the
result of dynamic-wind
. thunk3 is also called just before
control leaves the dynamic context of thunk2 by calling a
continuation created outside that context. Furthermore, thunk1 is
called before reentering the dynamic context of thunk2 by calling
a continuation created inside that context. (Control is inside the
context of thunk2 if thunk2 is on the current return stack).
Warning: There is no provision for dealing with errors or
interrupts. If an error or interrupt occurs while using
dynamic-wind
, the dynamic environment will be that in effect at
the time of the error or interrupt.