<br><br><div class="gmail_quote">On Fri, Aug 14, 2009 at 1:41 PM, John A. De Goes <span dir="ltr">&lt;<a href="mailto:john@n-brain.net">john@n-brain.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="word-wrap: break-word;"><div><br></div><div>Hmmm, my point (perhaps I wasn&#39;t clear), is that different effects have different commutability properties. In the case of a file system, you can commute two sequential reads from two different files. This has no effect on the result of the computation, assuming no interference from other programs -- and if there _is_ interference from other programs, then guarantees go out the window, _with or without_ commuting.</div>
<div><br></div><div>Monads are an insufficient structure to capture the fine semantics of effects. Something more powerful is needed. And in general, the way effects combine and commute is quite complicated and needs to be baked into the effect system, rather than being the responsibility of a lowly developer.</div>
</div></blockquote><div><br>It&#39;s really interesting.  This is related to the reasoning darcs does with patches (aka patch theory).  Patches tend to have effects on your repository.  Sometimes those effects can be reordered without changing the final state of the repository.  Other times, it is not possible to reorder them without either having a non-sensible final state or different final states.  I&#39;ve never thought about reading research about effect systems for the sake of version control.  I&#39;ll have to look into this.<br>
<br>Jason<br></div></div>