Oleg,
Once again, many thanks. This is great info. BTW, i realized that my approach has an underlying process algebraic formulation. Roughly speaking, you can think of the mutable collection as a tuple space in which the names of the tuple space are the mutable locations in the collection. Updates correspond to persistent (
i.e. replicated) outputs, accesses correspond to inputs. There is a natural interpretation of this approach in terms of delimited continuations; but, i think the other way round -- interpreting delimited continuations in terms of process algebraic operations -- is actually more natural.
Best wishes,
--greg
Greg Meredith wrote:
> First, has anyone worked out a monadic
> approach to copy-on-write? (And, Is there any analysis of perf
> characteristics of said monadic schemes?)
If you use Zippers (Huet's or generic ones) with functional updates,
copy-on-write comes out automatically and by default. This is
explained in
http://okmij.org/ftp/Computation/Continuations.html#zipper
and, in a more readable form, in a recent paper
http://okmij.org/ftp/papers/context-OS.pdf
The web page also contains the complete code.