This facility is a generalization of Common LISP
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-windcalls 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.