<br><br><div class="gmail_quote">On Thu, Feb 5, 2009 at 11:25 AM, Andrew Wagner <span dir="ltr">&lt;<a href="mailto:wagner.andrew@gmail.com">wagner.andrew@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

I think the point of the Monad is that it works as a container of stuff, that still allows mathematically pure things to happen, while possibly having some opaque &quot;other stuff&quot; going on. &nbsp;<br></blockquote></div>

</div></div></blockquote><div><br></div><div>&nbsp;This at least sounds, very wrong, even if it&#39;s not. Monads are not impure. IO is, but it&#39;s only _one_ instance of Monad. All others, as far as I know, are pure. It&#39;s just that the bind operation allows you to hide the stuff you don&#39;t want to have to worry about, that should happen every time you compose two monadic actions.&nbsp;</div>

</div>
</blockquote></div><br><div><br></div><div>Well all I can tell you is that I can have (IO Int) in a function as a return, and the function is not idempotent in terms of the &quot;stuff&quot; inside IO being the same.</div>
<div><br></div><div>Sounds impure to me.</div><div><br></div><div><br></div><div><br></div>