<br><br><div class="gmail_quote">On Sat, Aug 15, 2009 at 11:54 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="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div class="im"><div>On Aug 14, 2009, at 9:34 PM, Sebastian Sylvan wrote:</div><br><blockquote type="cite"><div class="gmail_quote">On Sat, Aug 15, 2009 at 3:55 AM, John A. De Goes <span dir="ltr">&lt;<a href="mailto:john@n-brain.net" target="_blank">john@n-brain.net</a>&gt;</span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 If you don&#39;t like the file system, consider mutable memory. An effect system will tell me I can safely update two pieces of non-overlapping, contiguous memory concurrently, even in different threads if the complexity so justifies it.</blockquote>
 <div><br></div><div>I&#39;d like to point out that this relaxation of sequencing for memory operations is already in effect in C on many CPUs. Even though you write things sequentially, it doesn&#39;t actually happen sequentially unless you explicitly say so with memory barriers. This causes massive head-aches and horrible bugs that are almost impossible to track down whenever you actually do depend on the order (usually in multi-threading scenarios, e.g. lockless data structures).</div>
</div></blockquote><div><br></div></div>That&#39;s because C has no effect system and is too low-level for an effect system. That&#39;s no argument against one in a high-level language similar in syntax to Haskell.</div></div>
</blockquote><div>... </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div></div><div class="im"><br></div><div>Your point about safety in C has no relation to safety in a functional language with a sophisticated effect system. </div>
</div></blockquote><div><br></div><div>I&#39;m sorry, but I think it does. You&#39;re advocating that modifications to mutable state shouldn&#39;t have sequential semantics, I&#39;m pointing out that this is the case today in C on many CPUs and it&#39;s a royal pain to work with in practice (causing many almost-impossible-to-debug crashes). I would not want functional languages to adopt something that&#39;s proven to be insanity-inducingly difficult to use.</div>
<div><br></div><div><br></div></div>-- <br>Sebastian Sylvan<br>