[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
DYNAMIC-WIND vs. multi-processing
Before DYNAMIC-WIND was incorporated into R5RS, process switching
could be trivially implemented using CALL-WITH-CURRENT-CONTINUATION.
Except for top-level variables, CALL-WITH-CURRENT-CONTINUATION
captured the whole state of a computation.
With DYNAMIC-WIND, state is alterred when a continuation is called
which is outside its dynamic scope (for instance to a separate
computation). This means that a separate primitive construct will be
needed in order to implement process switching in R5RS Scheme.
Alternately, one might say that users should just avoid the use of
DYNAMIC-WIND if they want to multi-process. But does the user really
have control over all uses of DYNAMIC-WIND? A library or
implementation defined function might use it and the user would be
unaware. CALL-WITH-INPUT-FILE and CALL-WITH-OUTPUT-FILE are
"continuation unsafe" in R4RS Scheme. Are there others?