<br><br><div class="gmail_quote">On Sat, Aug 15, 2009 at 11:45 PM, John A. De Goes <span dir="ltr">&lt;<a href="mailto:john@n-brain.net">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;">

Effect system optimizations are about taking programs that are correct, and transforming them to faster but equivalent programs that are still correct.</blockquote><div><br></div><div>And since reordering access to externally modifiable data (external includes memory if it&#39;s visible to other therads) is *not* safe, that shouldn&#39;t be done. You&#39;re arguing for doing unsafe (i.e. they can cause a functioning program to become non-functioning) transformations!</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
That said, your reasoning precludes the use of file read buffering, and other similar operations that are routinely done. It&#39;s only an illusion that such programs are &quot;safe&quot;, with or without transformation of sequential read operations.</blockquote>
<div><br></div><div>Yes, you do have to be very careful about abstractions like that, but the fact that we have some of that now, which can cause very hard-to-catch bugs when you rely on ordering, is no good argument that we should add even more of it!</div>
</div><br><br>-- <br>Sebastian Sylvan<br>