Oleg,<br><br>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.
<br><br>Best wishes,<br><br>--greg<br><br><div><span class="gmail_quote">On 6/23/07, <b class="gmail_sendername"><a href="mailto:oleg@pobox.com">oleg@pobox.com</a></b> &lt;<a href="mailto:oleg@pobox.com">oleg@pobox.com</a>
&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>Greg Meredith wrote:<br>&gt; First, has anyone worked out a monadic<br>
&gt; approach to copy-on-write? (And, Is there any analysis of perf<br>&gt; characteristics of said monadic schemes?)<br><br>If you use Zippers (Huet&#39;s or generic ones) with functional updates,<br>copy-on-write comes out automatically and by default. This is
<br>explained in<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://okmij.org/ftp/Computation/Continuations.html#zipper">http://okmij.org/ftp/Computation/Continuations.html#zipper</a><br>and, in a more readable form, in a recent paper<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="http://okmij.org/ftp/papers/context-OS.pdf">http://okmij.org/ftp/papers/context-OS.pdf</a><br><br>The web page also contains the complete code.<br><br></blockquote></div><br><br clear="all"><br>-- <br>L.G. Meredith
<br>Managing Partner<br>Biosimilarity LLC<br>505 N 72nd St<br>Seattle, WA 98103<br><br>+1 206.650.3740<br><br><a href="http://biosimilarity.blogspot.com">http://biosimilarity.blogspot.com</a>