<div dir="ltr">Here is my understanding with respect to the question.<div><br></div><div>In the general case, you cannot come out of a monad, because the monad typeclass does not include any functions without of the form (m a -&gt; a).</div>
<div><br></div><div>Also, as a category theoretic construct, a monad does not have to have an exit function. (caveat: I have a very limited grasp of what that means).</div><div><br></div><div>I also found myself thinking about list as a monad in terms of this discussion.  I think it&#39;s an interesting case:  it&#39;s pure, but it doesn&#39;t really make sense to &quot;come out of it&quot;.  Head, indexing, and last all break out of it, but none of them can be the default, and all of them require you to consider it as something more than its monad-ness.<br>
<br><div class="gmail_quote">On Fri, Jul 30, 2010 at 3:11 PM, Stefan Holdermans <span dir="ltr">&lt;<a href="mailto:stefan@vectorfabrics.com">stefan@vectorfabrics.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Martijn,<br>
<div class="im"><br>
&gt; In fact, I would argue that a monad which you cannot escape from is not very useful at all. IO is the only exception I know of.<br>
<br>
</div>And that&#39;s only because, at least the runtime system allows for execution of a computation inside the IO monad at top-level.<br>
<br>
Cheers,<br>
<font color="#888888"><br>
  Stefan<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>          Alex R<br>
</div></div>