On Sat, Aug 14, 2010 at 10:11 PM, Bill Atkins <span dir="ltr"><<a href="mailto:watkins@alum.rpi.edu" target="_blank">watkins@alum.rpi.edu</a>></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>
> And the IO monad is what Jerzy asked about. I'm pointing out that the state monad does not capture concurrency, and the "EDSL model" does not capture FFI. (Really, it depends which "EDSL model". I haven't seen one that can capture FFI. And maybe not concurrency either.)<br>
><br>
<br>
</div>So which model captures the way the IO monad works? </blockquote></div><br>I don'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>