<div dir="ltr">I think most people use monad-control these days for catching exceptions in monad stacks (<a href="http://hackage.haskell.org/package/monad-control-0.3.2.1">http://hackage.haskell.org/package/monad-control-0.3.2.1</a>).  The very convenient lifted-base package (<a href="http://hackage.haskell.org/package/lifted-base">http://hackage.haskell.org/package/lifted-base</a>) depends on it and exports a function Control.Exception.Lifted.catch:<div>
<br></div><div><div>Control.Exception.Lifted.catch :: (MonadBaseControl IO m, Exception e)<span class="" style="white-space:pre">        </span> </div><div>  =&gt; m a<span style="white-space:pre"> </span>-&gt; (e -&gt; m a) -&gt; m a</div>
</div><div><br></div><div style>I&#39;d recommend you use that instead of MonadCatchIO.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 22, 2013 at 4:13 AM, Eric Rasmussen <span dir="ltr">&lt;<a href="mailto:ericrasmussen@gmail.com" target="_blank">ericrasmussen@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 dir="ltr"><div><div>Arie,<br><br></div>Thanks for calling that out. The most useful part for my case is the MonadCatchIO implementation of catch:<br>
<br>catch :: Exception e =&gt; m a -&gt; (e -&gt; m a) -&gt; m a<br>
<br></div>Hoogle shows a few similar functions for that type signature, but they won&#39;t work for the case of catching an IOException in an arbitrary monad. Do you happen to know of another approach for catching IOExceptions and throwing them in ErrorT?<br>

<br>Thanks,<br>Eric<br><br><div><br><br><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jul 21, 2013 at 7:00 AM, Arie Peterson <span dir="ltr">&lt;<a href="mailto:ariep@xs4all.nl" target="_blank">ariep@xs4all.nl</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thursday 18 July 2013 23:05:33 Eric Rasmussen wrote:<br>
&gt; […]<br>
<div>&gt; Would there be any interest in cleaning that up and adding it (or something<br>
&gt; similar) to Control.Monad.CatchIO?<br>
</div>&gt; […]<br>
<br>
MonadCatchIO-transformers is being deprecated, as recently GHC has removed the<br>
&#39;block&#39; and &#39;unblock&#39; functions, rendering the api provided by<br>
Control.Monad.CatchIO obsolete.<br>
<br>
<br>
Regards,<br>
<br>
Arie<br>
<div><div><br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">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></div>
</div></div><br>_______________________________________________<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>
<br></blockquote></div><br></div>