On Sat, Aug 14, 2010 at 10:11 PM, Bill Atkins <span dir="ltr">&lt;<a href="mailto:watkins@alum.rpi.edu" target="_blank">watkins@alum.rpi.edu</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">





<div>On Saturday Aug 14, 2010, at 12:50 AM, Conal Elliott wrote:<br>
<br>
&gt; And the IO monad is what Jerzy asked about.  I&#39;m pointing out that the state monad does not capture concurrency, and the &quot;EDSL model&quot; does not capture FFI.  (Really, it depends which &quot;EDSL model&quot;.  I haven&#39;t seen one that can capture FFI.  And maybe not concurrency either.)<br>






&gt;<br>
<br>
</div>So which model captures the way the IO monad works? </blockquote></div><br>I don&#39;t think anyone has given a denotational (functional-style) model for the meaning of IO.  As I wrote <a href="http://conal.net/blog/posts/notions-of-purity-in-haskell/#comment-22829">elsewhere</a>:<br>

<br><div style="margin-left: 40px;">IO carries the collective sins of our tribe, as the scapegoat did among 
the ancient Hebrews.
Or, as Simon Peyton Jones expressed it, “The IO monad has become 
Haskell’s sin-bin.  Whenever we don’t understand something, we toss it 
in the IO monad.”  (From <a href="http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-retrospective/" rel="nofollow">Wearing the hair shirt – A retrospective on Haskell</a>.)
Is
 it likely that we can then come along later and give a compelling and 
mathematically well-behaved notion of equality to our toxic waste pile?
Or will it insist on behaving anti-sociably, as our own home-grown <a href="http://en.wikipedia.org/wiki/Toxic_Avenger" rel="nofollow">Toxic Avenger</a>?<br></div><br>