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 On 6/23/07, oleg@pobox.com <oleg@pobox.com> wrote:
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.
-- L.G. Meredith Managing Partner Biosimilarity LLC 505 N 72nd St Seattle, WA 98103 +1 206.650.3740 http://biosimilarity.blogspot.com