<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Use liftIO for that; that's what MonadIO is for. I expected you were needing to go the other way, because if you have MonadIO then you have IO via liftIO.</div></div></blockquote><div><br></div><div><br></div><div>The type signature for catch is -- </div><div><br></div><div>catch :: Exception e => IO a -> (e -> IO a) -> IO a</div><div><br></div><div>This is Spock's monad: <a href="https://hackage.haskell.org/package/Spock-core-0.11.0.0/docs/Web-Spock-Action.html#t:ActionCtxT">https://hackage.haskell.org/package/Spock-core-0.11.0.0/docs/Web-Spock-Action.html#t:ActionCtxT</a> (it has MonadTrans, MonadIO, Monad, Functor, Applicative, Alternative instances).</div><div><br></div><div>How do I catch an exception coming out of an action in the ActionCtxT monad?</div><div><br></div><div>-- Saurabh.</div></div><br><div class="gmail_signature"></div>
</div></div>