diff --git a/Control-Monad-Catch-Pure.html b/Control-Monad-Catch-Pure.html
new file mode 100644
index 0000000000000000000000000000000000000000..29aa2826d7a144ee0eff8af1ed93ba192b6de737
--- /dev/null
+++ b/Control-Monad-Catch-Pure.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Monad.Catch.Pure</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
+window.onload = function () {pageLoad();setSynopsis("mini_Control-Monad-Catch-Pure.html");};
+//]]>
+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Monad-Catch-Pure.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.8.0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) Edward Kmett 2013-2014, (c) Google Inc. 2012</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>non-portable</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Control.Monad.Catch.Pure</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Transformer</a></li><li><a href="#g:2">Typeclass</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module supplies a 'pure' monad transformer that can be used for
+ mock-testing code that throws exceptions, so long as those exceptions
+ are always thrown with <code><a href="Control-Monad-Catch.html#v:throwM">throwM</a></code>.</p><p>Do not mix <code><a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a></code> with <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></code>. Choose one or the other for the
+ bottom of your transformer stack!</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">newtype</span> <a href="#t:CatchT">CatchT</a> m a = <a href="#v:CatchT">CatchT</a> {<ul class="subs"><li><a href="#v:runCatchT">runCatchT</a> :: m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a)</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Catch">Catch</a> = <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> Identity</li><li class="src short"><a href="#v:runCatch">runCatch</a> :: <a href="Control-Monad-Catch-Pure.html#t:Catch">Catch</a> a -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a</li><li class="src short"><a href="#v:mapCatchT">mapCatchT</a> :: (m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a) -&gt; n (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> b)) -&gt; <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m a -&gt; <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> n b</li><li class="src short">module <a href="Control-Monad-Catch.html">Control.Monad.Catch</a></li></ul></div><div id="interface"><h1 id="g:1">Transformer</h1><div class="doc"><p>The <code>transformers</code>-style monad transfomer</p></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:CatchT" class="def">CatchT</a> m a <a href="src/Control-Monad-Catch-Pure.html#CatchT" class="link">Source</a></p><div class="doc"><p>Add <code><a href="Control-Monad-Catch.html#t:Exception">Exception</a></code> handling abilities to a <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a></code>.</p><p>This should <em>never</em> be used in combination with <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></code>. Think of <code><a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a></code>
+ as an alternative base monad for use with mocking code that solely throws
+ exceptions via <code><a href="Control-Monad-Catch.html#v:throwM">throwM</a></code>.</p><p>Note: that <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></code> monad has these abilities already, so stacking <code><a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a></code> on top
+ of it does not add any value and can possibly be confusing:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(error &quot;Hello!&quot; :: IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)
+</code></strong>Hello!
+</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>runCatchT $ (error &quot;Hello!&quot; :: CatchT IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)
+</code></strong>*** Exception: Hello!
+</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>runCatchT $ (throwM (ErrorCall &quot;Hello!&quot;) :: CatchT IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)
+</code></strong>Hello!
+</pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CatchT" class="def">CatchT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:runCatchT" class="def">runCatchT</a> :: m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a)</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:CatchT" class="caption collapser" onclick="toggleSection('i:CatchT')">Instances</p><div id="section.i:CatchT" class="show"><table><tr><td class="src">MonadTrans <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">MonadRWS r w s m =&gt; MonadRWS r w s (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">MonadReader e m =&gt; MonadReader e (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">MonadWriter w m =&gt; MonadWriter w (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">MonadState s m =&gt; MonadState s (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Applicative.html#t:Alternative">Alternative</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Functor">Functor</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:MonadPlus">MonadPlus</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Foldable.html#t:Foldable">Foldable</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Foldable.html#t:Foldable">Foldable</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Traversable.html#t:Traversable">Traversable</a> m) =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Traversable.html#t:Traversable">Traversable</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">MonadIO m =&gt; MonadIO (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc"><p>Note: This instance is only valid if the underlying monad has a single
+ exit point!</p></td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Catch" class="def">Catch</a> = <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> Identity <a href="src/Control-Monad-Catch-Pure.html#Catch" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:runCatch" class="def">runCatch</a> :: <a href="Control-Monad-Catch-Pure.html#t:Catch">Catch</a> a -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a <a href="src/Control-Monad-Catch-Pure.html#runCatch" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:mapCatchT" class="def">mapCatchT</a> :: (m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a) -&gt; n (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> b)) -&gt; <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m a -&gt; <a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> n b <a href="src/Control-Monad-Catch-Pure.html#mapCatchT" class="link">Source</a></p><div class="doc"><p>Map the unwrapped computation using the given function.</p><pre><code><a href="Control-Monad-Catch-Pure.html#v:runCatchT">runCatchT</a></code> (<code><a href="Control-Monad-Catch-Pure.html#v:mapCatchT">mapCatchT</a></code> f m) = f (<code><a href="Control-Monad-Catch-Pure.html#v:runCatchT">runCatchT</a></code> m)</pre></div></div><h1 id="g:2">Typeclass</h1><div class="doc"><p>The mtl style typeclass</p></div><div class="top"><p class="src">module <a href="Control-Monad-Catch.html">Control.Monad.Catch</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.15.1</p></div></body></html>
\ No newline at end of file
diff --git a/Control-Monad-Catch.html b/Control-Monad-Catch.html
index 7bb7752188067b4a5c5727aa6ff7ed26e34ad1d6..6e7d7c5ab692b3876e94f59576db3bad73b31e28 100644
--- a/Control-Monad-Catch.html
+++ b/Control-Monad-Catch.html
@@ -1,142 +1,120 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Monad.Catch</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
 window.onload = function () {pageLoad();setSynopsis("mini_Control-Monad-Catch.html");};
 //]]>
-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Monad-Catch.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>non-portable</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Control.Monad.Catch</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Typeclass
-</a></li><li><a href="#g:2">Transformer
-</a></li><li><a href="#g:3">Utilities
-</a></li><li><a href="#g:4">Re-exports from Control.Exception
-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module supports monads that can throw extensible exceptions. The
- exceptions are the very same from <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>, and the operations
- offered very similar, but here they are not limited to <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO.html#t:IO">IO</a></code>.
-</p><p>This code is in the style of both transformers and mtl, and is compatible
+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Monad-Catch.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.8.0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) Edward Kmett 2013-2014, (c) Google Inc. 2012</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>non-portable</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Control.Monad.Catch</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Typeclass</a></li><li><a href="#g:2">Utilities</a></li><li><a href="#g:3">Re-exports from Control.Exception</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module supports monads that can throw extensible exceptions. The
+ exceptions are the very same from <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>, and the operations
+ offered very similar, but here they are not limited to <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></code>.</p><p>This code is in the style of both transformers and mtl, and is compatible
  with them, though doesn't mimic the module structure or offer the complete
- range of features in those packages.
-</p><p>This is very similar to <code>ErrorT</code> and <code>MonadError</code>, but based on features of
- <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>. In particular, it handles the complex case of
+ range of features in those packages.</p><p>This is very similar to <code>ErrorT</code> and <code>MonadError</code>, but based on features of
+ <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>. In particular, it handles the complex case of
  asynchronous exceptions by including <code><a href="Control-Monad-Catch.html#v:mask">mask</a></code> in the typeclass. Note that the
- extensible extensions feature relies the RankNTypes language extension.
-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="#t:MonadCatch">MonadCatch</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:throwM">throwM</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; m a</li><li><a href="#v:catch">catch</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; m a -&gt; (e -&gt; m a) -&gt; m a</li><li><a href="#v:mask">mask</a> ::  ((<span class="keyword">forall</span> a.  m a -&gt; m a) -&gt; m b) -&gt; m b</li></ul></li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:CatchT">CatchT</a> m a = <a href="#v:CatchT">CatchT</a> {<ul class="subs"><li><a href="#v:runCatchT">runCatchT</a> :: m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a)</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Catch">Catch</a> = <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> <a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Data-Functor-Identity.html#t:Identity">Identity</a></li><li class="src short"><a href="#v:runCatch">runCatch</a> ::  <a href="Control-Monad-Catch.html#t:Catch">Catch</a> a -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a</li><li class="src short"><a href="#v:mapCatchT">mapCatchT</a> ::  (m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a) -&gt; n (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> b)) -&gt; <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m a -&gt; <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> n b</li><li class="src short"><a href="#v:catchAll">catchAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchIOError">catchIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchJust">catchJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; (b -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchIf">catchIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m a -&gt; (e -&gt; m a) -&gt; m a</li><li class="src short"><span class="keyword">data</span>  <a href="#t:Handler">Handler</a> m a = <span class="keyword">forall</span> e . <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; <a href="#v:Handler">Handler</a> (e -&gt; m a)</li><li class="src short"><a href="#v:catches">catches</a> :: (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Foldable.html#t:Foldable">Foldable</a> f, <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m) =&gt; m a -&gt; f (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m a) -&gt; m a</li><li class="src short"><a href="#v:handle">handle</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleJust">handleJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; (b -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:try">try</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; m a -&gt; m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> e a)</li><li class="src short"><a href="#v:tryJust">tryJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> b a)</li><li class="src short"><a href="#v:onException">onException</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a</li><li class="src short"><a href="#v:bracket">bracket</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c</li><li class="src short"><a href="#v:bracket_">bracket_</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m c -&gt; m c</li><li class="src short"><a href="#v:finally">finally</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a</li><li class="src short"><a href="#v:bracketOnError">bracketOnError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c</li><li class="src short"><span class="keyword">class</span> (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> e, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Show.html#t:Show">Show</a> e) =&gt; <a href="#t:Exception">Exception</a> e  <span class="keyword">where</span><ul class="subs"><li><a href="#v:toException">toException</a> :: e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></li><li><a href="#v:fromException">fromException</a> :: <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> e</li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:SomeException">SomeException</a>  <span class="keyword">where</span><ul class="subs"><li><a href="#v:SomeException">SomeException</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a>  </li></ul></li></ul></div><div id="interface"><h1 id="g:1">Typeclass
-</h1><div class="doc"><p>The mtl style typeclass
-</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a name="t:MonadCatch" class="def">MonadCatch</a> m  <span class="keyword">where</span><a href="src/Control-Monad-Catch.html#MonadCatch" class="link">Source</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:throwM" class="def">throwM</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; m a<a href="src/Control-Monad-Catch.html#throwM" class="link">Source</a></p><div class="doc"><p>Throw an exception. Note that this throws when this action is run in
+ extensible extensions feature relies on the RankNTypes language extension.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="#t:MonadThrow">MonadThrow</a> m <span class="keyword">where</span><ul class="subs"><li><a href="#v:throwM">throwM</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; m a</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="#t:MonadCatch">MonadCatch</a> m <span class="keyword">where</span><ul class="subs"><li><a href="#v:catch">catch</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; m a -&gt; (e -&gt; m a) -&gt; m a</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="#t:MonadMask">MonadMask</a> m <span class="keyword">where</span><ul class="subs"><li><a href="#v:mask">mask</a> :: ((<span class="keyword">forall</span> a. m a -&gt; m a) -&gt; m b) -&gt; m b</li><li><a href="#v:uninterruptibleMask">uninterruptibleMask</a> :: ((<span class="keyword">forall</span> a. m a -&gt; m a) -&gt; m b) -&gt; m b</li></ul></li><li class="src short"><a href="#v:mask_">mask_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m a</li><li class="src short"><a href="#v:uninterruptibleMask_">uninterruptibleMask_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m a</li><li class="src short"><a href="#v:catchAll">catchAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchIOError">catchIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchJust">catchJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; (b -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:catchIf">catchIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Bool.html#t:Bool">Bool</a>) -&gt; m a -&gt; (e -&gt; m a) -&gt; m a</li><li class="src short"><span class="keyword">data</span> <a href="#t:Handler">Handler</a> m a = <span class="keyword">forall</span> e . <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; <a href="#v:Handler">Handler</a> (e -&gt; m a)</li><li class="src short"><a href="#v:catches">catches</a> :: (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Foldable.html#t:Foldable">Foldable</a> f, <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m) =&gt; m a -&gt; f (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m a) -&gt; m a</li><li class="src short"><a href="#v:handle">handle</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleAll">handleAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleIOError">handleIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleJust">handleJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; (b -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:handleIf">handleIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Bool.html#t:Bool">Bool</a>) -&gt; (e -&gt; m a) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:try">try</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; m a -&gt; m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> e a)</li><li class="src short"><a href="#v:tryJust">tryJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> b a)</li><li class="src short"><a href="#v:onException">onException</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a</li><li class="src short"><a href="#v:bracket">bracket</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c</li><li class="src short"><a href="#v:bracket_">bracket_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m b -&gt; m c -&gt; m c</li><li class="src short"><a href="#v:finally">finally</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m b -&gt; m a</li><li class="src short"><a href="#v:bracketOnError">bracketOnError</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c</li><li class="src short"><span class="keyword">class</span> (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> * e, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Text-Show.html#t:Show">Show</a> e) =&gt; <a href="#t:Exception">Exception</a> e <span class="keyword">where</span><ul class="subs"><li><a href="#v:toException">toException</a> :: e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></li><li><a href="#v:fromException">fromException</a> :: <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> e</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:SomeException">SomeException</a> :: * <span class="keyword">where</span><ul class="subs"><li><a href="#v:SomeException">SomeException</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></li></ul></li></ul></div><div id="interface"><h1 id="g:1">Typeclass</h1><div class="doc"><p>The mtl style typeclass</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a name="t:MonadThrow" class="def">MonadThrow</a> m <span class="keyword">where</span> <a href="src/Control-Monad-Catch.html#MonadThrow" class="link">Source</a></p><div class="doc"><p>A class for monads in which exceptions may be thrown.</p><p>Instances should obey the following law:</p><pre>throwM e &gt;&gt; x = throwM e</pre><p>In other words, throwing an exception short-circuits the rest of the monadic
+ computation.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:throwM" class="def">throwM</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; m a <a href="src/Control-Monad-Catch.html#throwM" class="link">Source</a></p><div class="doc"><p>Throw an exception. Note that this throws when this action is run in
  the monad <code>m</code>, not when it is applied. It is a generalization of
- <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:throwIO">throwIO</a></code>.
-</p></div><p class="src"><a name="v:catch" class="def">catch</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; m a -&gt; (e -&gt; m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catch" class="link">Source</a></p><div class="doc"><p>Provide a handler for exceptions thrown during execution of the first
+ <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:throwIO">throwIO</a></code>.</p><p>Should satisfy the law:</p><pre>throwM e &gt;&gt; f = throwM e</pre></div></div><div class="subs instances"><p id="control.i:MonadThrow" class="caption collapser" onclick="toggleSection('i:MonadThrow')">Instances</p><div id="section.i:MonadThrow" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> []</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/GHC-Conc.html#t:STM">STM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(~) * e <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> e)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (ListT m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (MaybeT m)</td><td class="doc"><p>Throws exceptions into the base monad.</p></td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (IdentityT m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (ExceptT e m)</td><td class="doc"><p>Throws exceptions into the base monad.</p></td></tr><tr><td class="src">(Error e, <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m) =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (ErrorT e m)</td><td class="doc"><p>Throws exceptions into the base monad.</p></td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (ContT r m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (ReaderT r m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadThrow">MonadThrow</a> m =&gt; <a name="t:MonadCatch" class="def">MonadCatch</a> m <span class="keyword">where</span> <a href="src/Control-Monad-Catch.html#MonadCatch" class="link">Source</a></p><div class="doc"><p>A class for monads which allow exceptions to be caught, in particular
+ exceptions which were thrown by <code><a href="Control-Monad-Catch.html#v:throwM">throwM</a></code>.</p><p>Instances should obey the following law:</p><pre>catch (throwM e) f = f e</pre><p>Note that the ability to catch an exception does <em>not</em> guarantee that we can
+ deal with all possible exit points from a computation. Some monads, such as
+ continuation-based stacks, allow for more than just a success/failure
+ strategy, and therefore <code>catch</code> <em>cannot</em> be used by those monads to properly
+ implement a function such as <code>finally</code>. For more information, see
+ <code><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a></code>.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:catch" class="def">catch</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; m a -&gt; (e -&gt; m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catch" class="link">Source</a></p><div class="doc"><p>Provide a handler for exceptions thrown during execution of the first
  action. Note that type of the type of the argument to the handler will
- constrain which exceptions are caught. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s
- <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:catch">catch</a></code>.
-</p></div><p class="src"><a name="v:mask" class="def">mask</a> ::  ((<span class="keyword">forall</span> a.  m a -&gt; m a) -&gt; m b) -&gt; m b<a href="src/Control-Monad-Catch.html#mask" class="link">Source</a></p><div class="doc"><p>Runs an action with asynchronous exceptions diabled. The action is
+ constrain which exceptions are caught. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s
+ <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:catch">catch</a></code>.</p></div></div><div class="subs instances"><p id="control.i:MonadCatch" class="caption collapser" onclick="toggleSection('i:MonadCatch')">Instances</p><div id="section.i:MonadCatch" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/GHC-Conc.html#t:STM">STM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (ListT m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (MaybeT m)</td><td class="doc"><p>Catches exceptions from the base monad.</p></td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (IdentityT m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (ExceptT e m)</td><td class="doc"><p>Catches exceptions from the base monad.</p></td></tr><tr><td class="src">(Error e, <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (ErrorT e m)</td><td class="doc"><p>Catches exceptions from the base monad.</p></td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (ReaderT r m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a name="t:MonadMask" class="def">MonadMask</a> m <span class="keyword">where</span> <a href="src/Control-Monad-Catch.html#MonadMask" class="link">Source</a></p><div class="doc"><p>A class for monads which provide for the ability to account for all
+ possible exit points from a computation, and to mask asynchronous
+ exceptions. Continuation-based monads, and stacks such as <code>ErrorT e IO</code>
+ which provide for multiple failure modes, are invalid instances of this
+ class.</p><p>Note that this package <em>does</em> provide a <code>MonadMask</code> instance for <code>CatchT</code>.
+ This instance is <em>only</em> valid if the base monad provides no ability to
+ provide multiple exit. For example, <code>IO</code> or <code>Either</code> would be invalid base
+ monads, but <code>Reader</code> or <code>State</code> would be acceptable.</p><p>Instances should ensure that, in the following code:</p><pre>f `finally` g</pre><p>The action <code>g</code> is called regardless of what occurs within <code>f</code>, including
+ async exceptions.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mask" class="def">mask</a> :: ((<span class="keyword">forall</span> a. m a -&gt; m a) -&gt; m b) -&gt; m b <a href="src/Control-Monad-Catch.html#mask" class="link">Source</a></p><div class="doc"><p>Runs an action with asynchronous exceptions disabled. The action is
  provided a method for restoring the async. environment to what it was
- at the <code><a href="Control-Monad-Catch.html#v:mask">mask</a></code> call. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:mask">mask</a></code>.
-</p></div></div><div class="subs instances"><p id="control.i:MonadCatch" class="caption collapser" onclick="toggleSection('i:MonadCatch')">Instances</p><div id="section.i:MonadCatch" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Control-Monad-Trans-Identity.html#t:IdentityT">IdentityT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Reader.html#t:ReaderT">ReaderT</a> r m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-State-Lazy.html#t:StateT">StateT</a> s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-State-Strict.html#t:StateT">StateT</a> s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Writer-Lazy.html#t:WriterT">WriterT</a> w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Writer-Strict.html#t:WriterT">WriterT</a> w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-RWS-Lazy.html#t:RWST">RWST</a> r w s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-RWS-Strict.html#t:RWST">RWST</a> r w s m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:2">Transformer
-</h1><div class="doc"><p>The <code>transformers</code>-style monad transfomer
-</p></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:CatchT" class="def">CatchT</a> m a <a href="src/Control-Monad-Catch.html#CatchT" class="link">Source</a></p><div class="doc"><p>Add <code><a href="Control-Monad-Catch.html#t:Exception">Exception</a></code> handling abilities to a <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a></code>.
-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CatchT" class="def">CatchT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:runCatchT" class="def">runCatchT</a> :: m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a)</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:CatchT" class="caption collapser" onclick="toggleSection('i:CatchT')">Instances</p><div id="section.i:CatchT" class="show"><table><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Control-Monad-Trans-Class.html#t:MonadTrans">MonadTrans</a> <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-RWS-Class.html#t:MonadRWS">MonadRWS</a> r w s m =&gt; <a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-RWS-Class.html#t:MonadRWS">MonadRWS</a> r w s (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Reader-Class.html#t:MonadReader">MonadReader</a> e m =&gt; <a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Reader-Class.html#t:MonadReader">MonadReader</a> e (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-State-Class.html#t:MonadState">MonadState</a> s m =&gt; <a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-State-Class.html#t:MonadState">MonadState</a> s (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Writer-Class.html#t:MonadWriter">MonadWriter</a> w m =&gt; <a href="/Library/Haskell/ghc-7.4.1/lib/mtl-2.1.1/doc/html/Control-Monad-Writer-Class.html#t:MonadWriter">MonadWriter</a> w (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Functor">Functor</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad-Fix.html#t:MonadFix">MonadFix</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Foldable.html#t:Foldable">Foldable</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Foldable.html#t:Foldable">Foldable</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Traversable.html#t:Traversable">Traversable</a> m) =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Traversable.html#t:Traversable">Traversable</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Applicative.html#t:Alternative">Alternative</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Control-Monad-IO-Class.html#t:MonadIO">MonadIO</a> m =&gt; <a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Control-Monad-IO-Class.html#t:MonadIO">MonadIO</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> (<a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Catch" class="def">Catch</a> = <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> <a href="/Library/Haskell/ghc-7.4.1/lib/transformers-0.3.0.0/doc/html/Data-Functor-Identity.html#t:Identity">Identity</a><a href="src/Control-Monad-Catch.html#Catch" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:runCatch" class="def">runCatch</a> ::  <a href="Control-Monad-Catch.html#t:Catch">Catch</a> a -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a<a href="src/Control-Monad-Catch.html#runCatch" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:mapCatchT" class="def">mapCatchT</a> ::  (m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> a) -&gt; n (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> b)) -&gt; <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> m a -&gt; <a href="Control-Monad-Catch.html#t:CatchT">CatchT</a> n b<a href="src/Control-Monad-Catch.html#mapCatchT" class="link">Source</a></p><div class="doc"><p>Map the unwrapped computation using the given function.
-</p><ul><li> <code><code>runErrorT</code> (<code>mapErrorT</code> f m) = f (<code>runErrorT</code> m</code>)
-</li></ul></div></div><h1 id="g:3">Utilities
-</h1><div class="doc"><p>These functions follow those from <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>, except that they are
+ at the <code><a href="Control-Monad-Catch.html#v:mask">mask</a></code> call. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:mask">mask</a></code>.</p></div><p class="src"><a name="v:uninterruptibleMask" class="def">uninterruptibleMask</a> :: ((<span class="keyword">forall</span> a. m a -&gt; m a) -&gt; m b) -&gt; m b <a href="src/Control-Monad-Catch.html#uninterruptibleMask" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Control-Monad-Catch.html#v:mask">mask</a></code>, but the masked computation is not interruptible (see
+ <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:uninterruptibleMask">uninterruptibleMask</a></code>. WARNING:
+ Only use if you need to mask exceptions around an interruptible operation
+ AND you can guarantee the interruptible operation will only block for a
+ short period of time. Otherwise you render the program/thread unresponsive
+ and/or unkillable.</p></div></div><div class="subs instances"><p id="control.i:MonadMask" class="caption collapser" onclick="toggleSection('i:MonadMask')">Instances</p><div id="section.i:MonadMask" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (IdentityT m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (<a href="Control-Monad-Catch-Pure.html#t:CatchT">CatchT</a> m)</td><td class="doc"><p>Note: This instance is only valid if the underlying monad has a single
+ exit point!</p></td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (StateT s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (WriterT w m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (ReaderT r m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Monoid.html#t:Monoid">Monoid</a> w) =&gt; <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> (RWST r w s m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:2">Utilities</h1><div class="doc"><p>These functions follow those from <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>, except that they are
  based on methods from the <code><a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a></code> typeclass. See
- <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a> for API usage.
-</p></div><div class="top"><p class="src"><a name="v:catchAll" class="def">catchAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catchAll" class="link">Source</a></p><div class="doc"><p>Catches all exceptions, and somewhat defeats the purpose of the extensible
- exception system. Use sparingly.
-</p></div></div><div class="top"><p class="src"><a name="v:catchIOError" class="def">catchIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catchIOError" class="link">Source</a></p><div class="doc"><p>Catch all <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html#t:IOError">IOError</a></code> (eqv. <code>IOException</code>) exceptions. Still somewhat too
+ <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a> for API usage.</p></div><div class="top"><p class="src"><a name="v:mask_" class="def">mask_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#mask_" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Control-Monad-Catch.html#v:mask">mask</a></code>, but does not pass a <code>restore</code> action to the argument.</p></div></div><div class="top"><p class="src"><a name="v:uninterruptibleMask_" class="def">uninterruptibleMask_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#uninterruptibleMask_" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Control-Monad-Catch.html#v:uninterruptibleMask">uninterruptibleMask</a></code>, but does not pass a <code>restore</code> action to the
+ argument.</p></div></div><div class="top"><p class="src"><a name="v:catchAll" class="def">catchAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catchAll" class="link">Source</a></p><div class="doc"><p>Catches all exceptions, and somewhat defeats the purpose of the extensible
+ exception system. Use sparingly.</p></div></div><div class="top"><p class="src"><a name="v:catchIOError" class="def">catchIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catchIOError" class="link">Source</a></p><div class="doc"><p>Catch all <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a></code> (eqv. <code>IOException</code>) exceptions. Still somewhat too
  general, but better than using <code><a href="Control-Monad-Catch.html#v:catchAll">catchAll</a></code>. See <code><a href="Control-Monad-Catch.html#v:catchIf">catchIf</a></code> for an easy way
- of catching specific <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html#t:IOError">IOError</a></code>s based on the predicates in <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html">System.IO.Error</a>.
-</p></div></div><div class="top"><p class="src"><a name="v:catchJust" class="def">catchJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; (b -&gt; m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catchJust" class="link">Source</a></p><div class="doc"><p>A more generalized way of determining which exceptions to catch at
- run time.
-</p></div></div><div class="top"><p class="src"><a name="v:catchIf" class="def">catchIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; m a -&gt; (e -&gt; m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catchIf" class="link">Source</a></p><div class="doc"><p>Catch exceptions only if they pass some predicate. Often useful with the
- predicates for testing <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html#t:IOError">IOError</a></code> values in <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO-Error.html">System.IO.Error</a>.
-</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Handler" class="def">Handler</a> m a <a href="src/Control-Monad-Catch.html#Handler" class="link">Source</a></p><div class="doc"><p>Generalized version of <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html#t:Handler">Handler</a></code>
-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><span class="keyword">forall</span> e . <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; <a name="v:Handler" class="def">Handler</a> (e -&gt; m a)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Handler" class="caption collapser" onclick="toggleSection('i:Handler')">Instances</p><div id="section.i:Handler" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Monad.html#t:Functor">Functor</a> (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:catches" class="def">catches</a> :: (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Foldable.html#t:Foldable">Foldable</a> f, <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m) =&gt; m a -&gt; f (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m a) -&gt; m a<a href="src/Control-Monad-Catch.html#catches" class="link">Source</a></p><div class="doc"><p>Catches different sorts of exceptions. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html#v:catches">catches</a></code>
-</p></div></div><div class="top"><p class="src"><a name="v:handle" class="def">handle</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; m a) -&gt; m a -&gt; m a<a href="src/Control-Monad-Catch.html#handle" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catch">catch</a></code>. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:handle">handle</a></code>.
-</p></div></div><div class="top"><p class="src"><a name="v:handleJust" class="def">handleJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; (b -&gt; m a) -&gt; m a -&gt; m a<a href="src/Control-Monad-Catch.html#handleJust" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catchJust">catchJust</a></code>. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:handleJust">handleJust</a></code>.
-</p></div></div><div class="top"><p class="src"><a name="v:try" class="def">try</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; m a -&gt; m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> e a)<a href="src/Control-Monad-Catch.html#try" class="link">Source</a></p><div class="doc"><p>Similar to <code><a href="Control-Monad-Catch.html#v:catch">catch</a></code>, but returns an <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a></code> result. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s
- <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html#v:try">try</a></code>.
-</p></div></div><div class="top"><p class="src"><a name="v:tryJust" class="def">tryJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; m (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Either.html#t:Either">Either</a> b a)<a href="src/Control-Monad-Catch.html#tryJust" class="link">Source</a></p><div class="doc"><p>A variant of <code><a href="Control-Monad-Catch.html#v:try">try</a></code> that takes an exception predicate to select
- which exceptions are caught. See <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception.html">Control.Exception</a>'s <code><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#v:tryJust">tryJust</a></code>
-</p></div></div><div class="top"><p class="src"><a name="v:onException" class="def">onException</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a<a href="src/Control-Monad-Catch.html#onException" class="link">Source</a></p><div class="doc"><p>Run an action only if an exception is thrown in the main action. The
- exception is not caught, simply rethrown.
-</p></div></div><div class="top"><p class="src"><a name="v:bracket" class="def">bracket</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c<a href="src/Control-Monad-Catch.html#bracket" class="link">Source</a></p><div class="doc"><p>Generalized abstracted pattern of safe resource acquisition and release
+ of catching specific <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a></code>s based on the predicates in <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html">System.IO.Error</a>.</p></div></div><div class="top"><p class="src"><a name="v:catchJust" class="def">catchJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; (b -&gt; m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catchJust" class="link">Source</a></p><div class="doc"><p>A more generalized way of determining which exceptions to catch at
+ run time.</p></div></div><div class="top"><p class="src"><a name="v:catchIf" class="def">catchIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Bool.html#t:Bool">Bool</a>) -&gt; m a -&gt; (e -&gt; m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catchIf" class="link">Source</a></p><div class="doc"><p>Catch exceptions only if they pass some predicate. Often useful with the
+ predicates for testing <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a></code> values in <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html">System.IO.Error</a>.</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Handler" class="def">Handler</a> m a <a href="src/Control-Monad-Catch.html#Handler" class="link">Source</a></p><div class="doc"><p>Generalized version of <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html#t:Handler">Handler</a></code></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><span class="keyword">forall</span> e . <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; <a name="v:Handler" class="def">Handler</a> (e -&gt; m a)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Handler" class="caption collapser" onclick="toggleSection('i:Handler')">Instances</p><div id="section.i:Handler" class="show"><table><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Monad.html#t:Functor">Functor</a> (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:catches" class="def">catches</a> :: (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Foldable.html#t:Foldable">Foldable</a> f, <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m) =&gt; m a -&gt; f (<a href="Control-Monad-Catch.html#t:Handler">Handler</a> m a) -&gt; m a <a href="src/Control-Monad-Catch.html#catches" class="link">Source</a></p><div class="doc"><p>Catches different sorts of exceptions. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html#v:catches">catches</a></code></p></div></div><div class="top"><p class="src"><a name="v:handle" class="def">handle</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; m a) -&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#handle" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catch">catch</a></code>. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:handle">handle</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:handleAll" class="def">handleAll</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; (<a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; m a) -&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#handleAll" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catchAll">catchAll</a></code></p></div></div><div class="top"><p class="src"><a name="v:handleIOError" class="def">handleIOError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-IO-Error.html#t:IOError">IOError</a> -&gt; m a) -&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#handleIOError" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catchIOError">catchIOError</a></code></p></div></div><div class="top"><p class="src"><a name="v:handleJust" class="def">handleJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; (b -&gt; m a) -&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#handleJust" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catchJust">catchJust</a></code>. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:handleJust">handleJust</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:handleIf" class="def">handleIf</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Bool.html#t:Bool">Bool</a>) -&gt; (e -&gt; m a) -&gt; m a -&gt; m a <a href="src/Control-Monad-Catch.html#handleIf" class="link">Source</a></p><div class="doc"><p>Flipped <code><a href="Control-Monad-Catch.html#v:catchIf">catchIf</a></code></p></div></div><div class="top"><p class="src"><a name="v:try" class="def">try</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; m a -&gt; m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> e a) <a href="src/Control-Monad-Catch.html#try" class="link">Source</a></p><div class="doc"><p>Similar to <code><a href="Control-Monad-Catch.html#v:catch">catch</a></code>, but returns an <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a></code> result. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s
+ <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html#v:try">try</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:tryJust" class="def">tryJust</a> :: (<a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m, <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e) =&gt; (e -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> b) -&gt; m a -&gt; m (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Either.html#t:Either">Either</a> b a) <a href="src/Control-Monad-Catch.html#tryJust" class="link">Source</a></p><div class="doc"><p>A variant of <code><a href="Control-Monad-Catch.html#v:try">try</a></code> that takes an exception predicate to select
+ which exceptions are caught. See <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception.html">Control.Exception</a>'s <code><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#v:tryJust">tryJust</a></code></p></div></div><div class="top"><p class="src"><a name="v:onException" class="def">onException</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a <a href="src/Control-Monad-Catch.html#onException" class="link">Source</a></p><div class="doc"><p>Run an action only if an exception is thrown in the main action. The
+ exception is not caught, simply rethrown.</p></div></div><div class="top"><p class="src"><a name="v:bracket" class="def">bracket</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c <a href="src/Control-Monad-Catch.html#bracket" class="link">Source</a></p><div class="doc"><p>Generalized abstracted pattern of safe resource acquisition and release
  in the face of exceptions. The first action &quot;acquires&quot; some value, which
  is &quot;released&quot; by the second action at the end. The third action &quot;uses&quot;
- the value and its result is the result of the <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code>.
-</p><p>If an exception occurs during the use, the release still happens before the
- exception is rethrown.
-</p></div></div><div class="top"><p class="src"><a name="v:bracket_" class="def">bracket_</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m c -&gt; m c<a href="src/Control-Monad-Catch.html#bracket_" class="link">Source</a></p><div class="doc"><p>Version of <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code> without any value being passed to the second and
- third actions.
-</p></div></div><div class="top"><p class="src"><a name="v:finally" class="def">finally</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; m b -&gt; m a<a href="src/Control-Monad-Catch.html#finally" class="link">Source</a></p><div class="doc"><p>Perform an action with a finalizer action that is run, even if an
- exception occurs.
-</p></div></div><div class="top"><p class="src"><a name="v:bracketOnError" class="def">bracketOnError</a> :: <a href="Control-Monad-Catch.html#t:MonadCatch">MonadCatch</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c<a href="src/Control-Monad-Catch.html#bracketOnError" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code>, but only performs the final action if there was an
- exception raised by the in-between computation.
-</p></div></div><h1 id="g:4">Re-exports from Control.Exception
-</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> e, <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Show.html#t:Show">Show</a> e) =&gt; <a name="t:Exception" class="def">Exception</a> e  <span class="keyword">where</span></p><div class="doc"><p>Any type that you wish to throw or catch as an exception must be an
+ the value and its result is the result of the <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code>.</p><p>If an exception occurs during the use, the release still happens before the
+ exception is rethrown.</p></div></div><div class="top"><p class="src"><a name="v:bracket_" class="def">bracket_</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m b -&gt; m c -&gt; m c <a href="src/Control-Monad-Catch.html#bracket_" class="link">Source</a></p><div class="doc"><p>Version of <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code> without any value being passed to the second and
+ third actions.</p></div></div><div class="top"><p class="src"><a name="v:finally" class="def">finally</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; m b -&gt; m a <a href="src/Control-Monad-Catch.html#finally" class="link">Source</a></p><div class="doc"><p>Perform an action with a finalizer action that is run, even if an
+ exception occurs.</p></div></div><div class="top"><p class="src"><a name="v:bracketOnError" class="def">bracketOnError</a> :: <a href="Control-Monad-Catch.html#t:MonadMask">MonadMask</a> m =&gt; m a -&gt; (a -&gt; m b) -&gt; (a -&gt; m c) -&gt; m c <a href="src/Control-Monad-Catch.html#bracketOnError" class="link">Source</a></p><div class="doc"><p>Like <code><a href="Control-Monad-Catch.html#v:bracket">bracket</a></code>, but only performs the final action if there was an
+ exception raised by the in-between computation.</p></div></div><h1 id="g:3">Re-exports from Control.Exception</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> * e, <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Text-Show.html#t:Show">Show</a> e) =&gt; <a name="t:Exception" class="def">Exception</a> e <span class="keyword">where</span></p><div class="doc"><p>Any type that you wish to throw or catch as an exception must be an
 instance of the <code>Exception</code> class. The simplest case is a new exception
-type directly below the root:
-</p><pre> data MyException = ThisException | ThatException
-     deriving (Show, Typeable)
+type directly below the root:</p><pre>data MyException = ThisException | ThatException
+    deriving (Show, Typeable)
 
- instance Exception MyException
-</pre><p>The default method definitions in the <code>Exception</code> class do what we need
+instance Exception MyException</pre><p>The default method definitions in the <code>Exception</code> class do what we need
 in this case. You can now throw and catch <code>ThisException</code> and
-<code>ThatException</code> as exceptions:
-</p><pre>
-*Main&gt; throw ThisException `catch` \e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: MyException))
+<code>ThatException</code> as exceptions:</p><pre>*Main&gt; throw ThisException `catch` \e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: MyException))
 Caught ThisException
 </pre><p>In more complicated examples, you may wish to define a whole hierarchy
-of exceptions:
-</p><pre> ---------------------------------------------------------------------
- -- Make the root exception type for all the exceptions in a compiler
+of exceptions:</p><pre>---------------------------------------------------------------------
+-- Make the root exception type for all the exceptions in a compiler
 
- data SomeCompilerException = forall e . Exception e =&gt; SomeCompilerException e
-     deriving Typeable
+data SomeCompilerException = forall e . Exception e =&gt; SomeCompilerException e
+    deriving Typeable
 
- instance Show SomeCompilerException where
-     show (SomeCompilerException e) = show e
+instance Show SomeCompilerException where
+    show (SomeCompilerException e) = show e
 
- instance Exception SomeCompilerException
+instance Exception SomeCompilerException
 
- compilerExceptionToException :: Exception e =&gt; e -&gt; SomeException
- compilerExceptionToException = toException . SomeCompilerException
+compilerExceptionToException :: Exception e =&gt; e -&gt; SomeException
+compilerExceptionToException = toException . SomeCompilerException
 
- compilerExceptionFromException :: Exception e =&gt; SomeException -&gt; Maybe e
- compilerExceptionFromException x = do
-     SomeCompilerException a &lt;- fromException x
-     cast a
+compilerExceptionFromException :: Exception e =&gt; SomeException -&gt; Maybe e
+compilerExceptionFromException x = do
+    SomeCompilerException a &lt;- fromException x
+    cast a
 
- ---------------------------------------------------------------------
- -- Make a subhierarchy for exceptions in the frontend of the compiler
+---------------------------------------------------------------------
+-- Make a subhierarchy for exceptions in the frontend of the compiler
 
- data SomeFrontendException = forall e . Exception e =&gt; SomeFrontendException e
-     deriving Typeable
+data SomeFrontendException = forall e . Exception e =&gt; SomeFrontendException e
+    deriving Typeable
 
- instance Show SomeFrontendException where
-     show (SomeFrontendException e) = show e
+instance Show SomeFrontendException where
+    show (SomeFrontendException e) = show e
 
- instance Exception SomeFrontendException where
-     toException = compilerExceptionToException
-     fromException = compilerExceptionFromException
+instance Exception SomeFrontendException where
+    toException = compilerExceptionToException
+    fromException = compilerExceptionFromException
 
- frontendExceptionToException :: Exception e =&gt; e -&gt; SomeException
- frontendExceptionToException = toException . SomeFrontendException
+frontendExceptionToException :: Exception e =&gt; e -&gt; SomeException
+frontendExceptionToException = toException . SomeFrontendException
 
- frontendExceptionFromException :: Exception e =&gt; SomeException -&gt; Maybe e
- frontendExceptionFromException x = do
-     SomeFrontendException a &lt;- fromException x
-     cast a
+frontendExceptionFromException :: Exception e =&gt; SomeException -&gt; Maybe e
+frontendExceptionFromException x = do
+    SomeFrontendException a &lt;- fromException x
+    cast a
 
- ---------------------------------------------------------------------
- -- Make an exception type for a particular frontend compiler exception
+---------------------------------------------------------------------
+-- Make an exception type for a particular frontend compiler exception
 
- data MismatchedParentheses = MismatchedParentheses
-     deriving (Typeable, Show)
+data MismatchedParentheses = MismatchedParentheses
+    deriving (Typeable, Show)
 
- instance Exception MismatchedParentheses where
-     toException   = frontendExceptionToException
-     fromException = frontendExceptionFromException
-</pre><p>We can now catch a <code>MismatchedParentheses</code> exception as
+instance Exception MismatchedParentheses where
+    toException   = frontendExceptionToException
+    fromException = frontendExceptionFromException</pre><p>We can now catch a <code>MismatchedParentheses</code> exception as
 <code>MismatchedParentheses</code>, <code>SomeFrontendException</code> or
-<code>SomeCompilerException</code>, but not other types, e.g. <code>IOException</code>:
-</p><pre>
-*Main&gt; throw MismatchedParentheses <code>catch</code> e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: MismatchedParentheses))
+<code>SomeCompilerException</code>, but not other types, e.g. <code>IOException</code>:</p><pre>*Main&gt; throw MismatchedParentheses <code>catch</code> e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: MismatchedParentheses))
 Caught MismatchedParentheses
 *Main&gt; throw MismatchedParentheses <code>catch</code> e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: SomeFrontendException))
 Caught MismatchedParentheses
@@ -144,7 +122,6 @@ Caught MismatchedParentheses
 Caught MismatchedParentheses
 *Main&gt; throw MismatchedParentheses <code>catch</code> e -&gt; putStrLn (&quot;Caught &quot; ++ show (e :: IOException))
 *** Exception: MismatchedParentheses
-</pre></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:toException" class="def">toException</a> :: e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></p><p class="src"><a name="v:fromException" class="def">fromException</a> :: <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> e</p></div><div class="subs instances"><p id="control.i:Exception" class="caption collapser" onclick="toggleSection('i:Exception')">Instances</p><div id="section.i:Exception" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:PatternMatchFail">PatternMatchFail</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:RecSelError">RecSelError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:RecConError">RecConError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:RecUpdError">RecUpdError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:NoMethodError">NoMethodError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:NonTermination">NonTermination</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:NestedAtomically">NestedAtomically</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:BlockedIndefinitelyOnMVar">BlockedIndefinitelyOnMVar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:BlockedIndefinitelyOnSTM">BlockedIndefinitelyOnSTM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:Deadlock">Deadlock</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:AssertionFailed">AssertionFailed</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:AsyncException">AsyncException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:ArrayException">ArrayException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-Exit.html#t:ExitCode">ExitCode</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:IOException">IOException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:ErrorCall">ErrorCall</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Control-Exception-Base.html#t:ArithException">ArithException</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:SomeException" class="def">SomeException</a>  <span class="keyword">where</span></p><div class="doc"><p>The <code>SomeException</code> type is the root of the exception type hierarchy.
+</pre></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src">Nothing</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:toException" class="def">toException</a> :: e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></p><p class="src"><a name="v:fromException" class="def">fromException</a> :: <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a> -&gt; <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Maybe.html#t:Maybe">Maybe</a> e</p></div><div class="subs instances"><p id="control.i:Exception" class="caption collapser" onclick="toggleSection('i:Exception')">Instances</p><div id="section.i:Exception" class="show"><table><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:PatternMatchFail">PatternMatchFail</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:RecSelError">RecSelError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:RecConError">RecConError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:RecUpdError">RecUpdError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:NoMethodError">NoMethodError</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:NonTermination">NonTermination</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:NestedAtomically">NestedAtomically</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:BlockedIndefinitelyOnMVar">BlockedIndefinitelyOnMVar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:BlockedIndefinitelyOnSTM">BlockedIndefinitelyOnSTM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:Deadlock">Deadlock</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:AssertionFailed">AssertionFailed</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:SomeAsyncException">SomeAsyncException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:AsyncException">AsyncException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:ArrayException">ArrayException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/System-Exit.html#t:ExitCode">ExitCode</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:IOException">IOException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:ErrorCall">ErrorCall</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Control-Exception-Base.html#t:ArithException">ArithException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:SomeException" class="def">SomeException</a> :: * <span class="keyword">where</span></p><div class="doc"><p>The <code>SomeException</code> type is the root of the exception type hierarchy.
 When an exception of type <code>e</code> is thrown, behind the scenes it is
-encapsulated in a <code>SomeException</code>.
-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SomeException" class="def">SomeException</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:SomeException" class="caption collapser" onclick="toggleSection('i:SomeException')">Instances</p><div id="section.i:SomeException" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Show.html#t:Show">Show</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.4.1-x86_64/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>
\ No newline at end of file
+encapsulated in a <code>SomeException</code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SomeException" class="def">SomeException</a> :: <a href="Control-Monad-Catch.html#t:Exception">Exception</a> e =&gt; e -&gt; <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:SomeException" class="caption collapser" onclick="toggleSection('i:SomeException')">Instances</p><div id="section.i:SomeException" class="show"><table><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Text-Show.html#t:Show">Show</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Catch.html#t:Exception">Exception</a> <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="file:///usr/local/share/doc/ghc/html/libraries/base-4.7.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> * <a href="Control-Monad-Catch.html#t:SomeException">SomeException</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.15.1</p></div></body></html>
\ No newline at end of file
diff --git a/doc-index.html b/doc-index.html
index 07ffde9b746eac2426021f413a3aef8cabfd434b..0d2e3b087974ad0b89414052f8fb0321c13edc25 100644
--- a/doc-index.html
+++ b/doc-index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.1: Extensible optionally-pure exceptions (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.8.0.1: Extensible optionally-pure exceptions (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
 window.onload = function () {pageLoad();};
 //]]>
-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">bracket</td><td class="module"><a href="Control-Monad-Catch.html#v:bracket">Control.Monad.Catch</a></td></tr><tr><td class="src">bracketOnError</td><td class="module"><a href="Control-Monad-Catch.html#v:bracketOnError">Control.Monad.Catch</a></td></tr><tr><td class="src">bracket_</td><td class="module"><a href="Control-Monad-Catch.html#v:bracket_">Control.Monad.Catch</a></td></tr><tr><td class="src">Catch</td><td class="module"><a href="Control-Monad-Catch.html#t:Catch">Control.Monad.Catch</a></td></tr><tr><td class="src">catch</td><td class="module"><a href="Control-Monad-Catch.html#v:catch">Control.Monad.Catch</a></td></tr><tr><td class="src">catchAll</td><td class="module"><a href="Control-Monad-Catch.html#v:catchAll">Control.Monad.Catch</a></td></tr><tr><td class="src">catches</td><td class="module"><a href="Control-Monad-Catch.html#v:catches">Control.Monad.Catch</a></td></tr><tr><td class="src">catchIf</td><td class="module"><a href="Control-Monad-Catch.html#v:catchIf">Control.Monad.Catch</a></td></tr><tr><td class="src">catchIOError</td><td class="module"><a href="Control-Monad-Catch.html#v:catchIOError">Control.Monad.Catch</a></td></tr><tr><td class="src">catchJust</td><td class="module"><a href="Control-Monad-Catch.html#v:catchJust">Control.Monad.Catch</a></td></tr><tr><td class="src">CatchT</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch.html#t:CatchT">Control.Monad.Catch</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch.html#v:CatchT">Control.Monad.Catch</a></td></tr><tr><td class="src">Exception</td><td class="module"><a href="Control-Monad-Catch.html#t:Exception">Control.Monad.Catch</a></td></tr><tr><td class="src">finally</td><td class="module"><a href="Control-Monad-Catch.html#v:finally">Control.Monad.Catch</a></td></tr><tr><td class="src">fromException</td><td class="module"><a href="Control-Monad-Catch.html#v:fromException">Control.Monad.Catch</a></td></tr><tr><td class="src">handle</td><td class="module"><a href="Control-Monad-Catch.html#v:handle">Control.Monad.Catch</a></td></tr><tr><td class="src">handleJust</td><td class="module"><a href="Control-Monad-Catch.html#v:handleJust">Control.Monad.Catch</a></td></tr><tr><td class="src">Handler</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch.html#t:Handler">Control.Monad.Catch</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch.html#v:Handler">Control.Monad.Catch</a></td></tr><tr><td class="src">mapCatchT</td><td class="module"><a href="Control-Monad-Catch.html#v:mapCatchT">Control.Monad.Catch</a></td></tr><tr><td class="src">mask</td><td class="module"><a href="Control-Monad-Catch.html#v:mask">Control.Monad.Catch</a></td></tr><tr><td class="src">MonadCatch</td><td class="module"><a href="Control-Monad-Catch.html#t:MonadCatch">Control.Monad.Catch</a></td></tr><tr><td class="src">onException</td><td class="module"><a href="Control-Monad-Catch.html#v:onException">Control.Monad.Catch</a></td></tr><tr><td class="src">runCatch</td><td class="module"><a href="Control-Monad-Catch.html#v:runCatch">Control.Monad.Catch</a></td></tr><tr><td class="src">runCatchT</td><td class="module"><a href="Control-Monad-Catch.html#v:runCatchT">Control.Monad.Catch</a></td></tr><tr><td class="src">SomeException</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch.html#v:SomeException">Control.Monad.Catch</a></td></tr><tr><td class="alt">2 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch.html#t:SomeException">Control.Monad.Catch</a></td></tr><tr><td class="src">throwM</td><td class="module"><a href="Control-Monad-Catch.html#v:throwM">Control.Monad.Catch</a></td></tr><tr><td class="src">toException</td><td class="module"><a href="Control-Monad-Catch.html#v:toException">Control.Monad.Catch</a></td></tr><tr><td class="src">try</td><td class="module"><a href="Control-Monad-Catch.html#v:try">Control.Monad.Catch</a></td></tr><tr><td class="src">tryJust</td><td class="module"><a href="Control-Monad-Catch.html#v:tryJust">Control.Monad.Catch</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>
\ No newline at end of file
+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.8.0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">bracket</td><td class="module"><a href="Control-Monad-Catch.html#v:bracket">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">bracketOnError</td><td class="module"><a href="Control-Monad-Catch.html#v:bracketOnError">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">bracket_</td><td class="module"><a href="Control-Monad-Catch.html#v:bracket_">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">Catch</td><td class="module"><a href="Control-Monad-Catch-Pure.html#t:Catch">Control.Monad.Catch.Pure</a></td></tr><tr><td class="src">catch</td><td class="module"><a href="Control-Monad-Catch.html#v:catch">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">catchAll</td><td class="module"><a href="Control-Monad-Catch.html#v:catchAll">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">catches</td><td class="module"><a href="Control-Monad-Catch.html#v:catches">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">catchIf</td><td class="module"><a href="Control-Monad-Catch.html#v:catchIf">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">catchIOError</td><td class="module"><a href="Control-Monad-Catch.html#v:catchIOError">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">catchJust</td><td class="module"><a href="Control-Monad-Catch.html#v:catchJust">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">CatchT</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch-Pure.html#t:CatchT">Control.Monad.Catch.Pure</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch-Pure.html#v:CatchT">Control.Monad.Catch.Pure</a></td></tr><tr><td class="src">Exception</td><td class="module"><a href="Control-Monad-Catch.html#t:Exception">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">finally</td><td class="module"><a href="Control-Monad-Catch.html#v:finally">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">fromException</td><td class="module"><a href="Control-Monad-Catch.html#v:fromException">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">handle</td><td class="module"><a href="Control-Monad-Catch.html#v:handle">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">handleAll</td><td class="module"><a href="Control-Monad-Catch.html#v:handleAll">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">handleIf</td><td class="module"><a href="Control-Monad-Catch.html#v:handleIf">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">handleIOError</td><td class="module"><a href="Control-Monad-Catch.html#v:handleIOError">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">handleJust</td><td class="module"><a href="Control-Monad-Catch.html#v:handleJust">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">Handler</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch.html#t:Handler">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch.html#v:Handler">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">mapCatchT</td><td class="module"><a href="Control-Monad-Catch-Pure.html#v:mapCatchT">Control.Monad.Catch.Pure</a></td></tr><tr><td class="src">mask</td><td class="module"><a href="Control-Monad-Catch.html#v:mask">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">mask_</td><td class="module"><a href="Control-Monad-Catch.html#v:mask_">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">MonadCatch</td><td class="module"><a href="Control-Monad-Catch.html#t:MonadCatch">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">MonadMask</td><td class="module"><a href="Control-Monad-Catch.html#t:MonadMask">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">MonadThrow</td><td class="module"><a href="Control-Monad-Catch.html#t:MonadThrow">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">onException</td><td class="module"><a href="Control-Monad-Catch.html#v:onException">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">runCatch</td><td class="module"><a href="Control-Monad-Catch-Pure.html#v:runCatch">Control.Monad.Catch.Pure</a></td></tr><tr><td class="src">runCatchT</td><td class="module"><a href="Control-Monad-Catch-Pure.html#v:runCatchT">Control.Monad.Catch.Pure</a></td></tr><tr><td class="src">SomeException</td><td>&nbsp;</td></tr><tr><td class="alt">1 (Data Constructor)</td><td class="module"><a href="Control-Monad-Catch.html#v:SomeException">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="alt">2 (Type/Class)</td><td class="module"><a href="Control-Monad-Catch.html#t:SomeException">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">throwM</td><td class="module"><a href="Control-Monad-Catch.html#v:throwM">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">toException</td><td class="module"><a href="Control-Monad-Catch.html#v:toException">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">try</td><td class="module"><a href="Control-Monad-Catch.html#v:try">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">tryJust</td><td class="module"><a href="Control-Monad-Catch.html#v:tryJust">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">uninterruptibleMask</td><td class="module"><a href="Control-Monad-Catch.html#v:uninterruptibleMask">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr><tr><td class="src">uninterruptibleMask_</td><td class="module"><a href="Control-Monad-Catch.html#v:uninterruptibleMask_">Control.Monad.Catch</a>, Control.Monad.Catch.Pure</td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.15.1</p></div></body></html>
\ No newline at end of file
diff --git a/exceptions.haddock b/exceptions.haddock
index 294674489a27bc8a9338953ccb0f3618e3eda53b..e11f3c18b0858ace69f9e471502cc92172895774 100644
Binary files a/exceptions.haddock and b/exceptions.haddock differ
diff --git a/frames.html b/frames.html
index 30ce1fa51379971b1efc11ec0ac1dca309e6a287..1b4e38d4a513de8e2fc27d9619999a1732330561 100644
--- a/frames.html
+++ b/frames.html
@@ -3,6 +3,7 @@
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
+<title></title>
 <script src="haddock-util.js" type="text/javascript"></script>
 <script type="text/javascript"><!--
 /*
@@ -18,11 +19,12 @@ function load() {
   postReframe();
 }
 --></script>
+</head>
 <frameset id="outer-fs" cols="25%,75%" onload="load()">
   <frameset id="inner-fs" rows="100%,0%">
-    <frame src="index-frames.html" name="modules">
-    <frame src="" name="synopsis">
+    <frame src="index-frames.html" name="modules" />
+    <frame src="" name="synopsis" />
   </frameset>
-  <frame src="index.html" name="main">
+  <frame src="index.html" name="main" />
 </frameset>
 </html>
diff --git a/index-frames.html b/index-frames.html
index 748c92bfc31f2bc2040c7f7ced791f5d330a0d4d..355644acf40348ab3c3c95e0f4141461b1f5792b 100644
--- a/index-frames.html
+++ b/index-frames.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.1: Extensible optionally-pure exceptions</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.8.0.1: Extensible optionally-pure exceptions</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
 window.onload = function () {pageLoad();};
 //]]>
-</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Control-Monad-Catch.html" target="main">Control.Monad.Catch</a></li></ul></div></body></html>
\ No newline at end of file
+</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Control-Monad-Catch.html" target="main">Control.Monad.Catch</a></li><li class="module"><a href="Control-Monad-Catch-Pure.html" target="main">Control.Monad.Catch.Pure</a></li></ul></div></body></html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 695e2f37e7c5d19e940e3152eaf12f2e148902ef..d83d4f6463ccf52ec74c10945eddc73f6298df3d 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.1: Extensible optionally-pure exceptions</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>exceptions-0.8.0.1: Extensible optionally-pure exceptions</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
 window.onload = function () {pageLoad();};
 //]]>
-</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="description"><h1>exceptions-0.1: Extensible optionally-pure exceptions</h1><div class="doc"><p>Extensible optionally-pure exceptions
-</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Control</span><ul id="section.n.1" class="show"><li><span id="control.n.1.1" class="module collapser" onclick="toggleSection('n.1.1')">Monad</span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="Control-Monad-Catch.html">Control.Monad.Catch</a></span></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>
\ No newline at end of file
+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">exceptions-0.8.0.1: Extensible optionally-pure exceptions</p></div><div id="content"><div id="description"><h1>exceptions-0.8.0.1: Extensible optionally-pure exceptions</h1><div class="doc"><p>Extensible optionally-pure exceptions</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Control</span><ul id="section.n.1" class="show"><li><span id="control.n.1.1" class="module collapser" onclick="toggleSection('n.1.1')">Monad</span><ul id="section.n.1.1" class="show"><li><span class="module"><span id="control.n.1.1.1" class="collapser" onclick="toggleSection('n.1.1.1')">&nbsp;</span><a href="Control-Monad-Catch.html">Control.Monad.Catch</a></span><ul id="section.n.1.1.1" class="show"><li><span class="module"><a href="Control-Monad-Catch-Pure.html">Control.Monad.Catch.Pure</a></span></li></ul></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.15.1</p></div></body></html>
\ No newline at end of file
diff --git a/mini_Control-Monad-Catch-Pure.html b/mini_Control-Monad-Catch-Pure.html
new file mode 100644
index 0000000000000000000000000000000000000000..314c5f52f36f74f995c40240f2887cef605ad647
--- /dev/null
+++ b/mini_Control-Monad-Catch-Pure.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Monad.Catch.Pure</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
+window.onload = function () {pageLoad();};
+//]]>
+</script></head><body id="mini"><div id="module-header"><p class="caption">Control.Monad.Catch.Pure</p></div><div id="interface"><h1>Transformer</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch-Pure.html#t:CatchT" target="main">CatchT</a> m a</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Control-Monad-Catch-Pure.html#t:Catch" target="main">Catch</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch-Pure.html#v:runCatch" target="main">runCatch</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch-Pure.html#v:mapCatchT" target="main">mapCatchT</a></p></div><h1>Typeclass</h1></div></body></html>
\ No newline at end of file
diff --git a/mini_Control-Monad-Catch.html b/mini_Control-Monad-Catch.html
index 58b90787dd2098848c9138acd5ef0b499d671f08..6e830d94b71a8cf4a220c63ed47f0633cf3865f8 100644
--- a/mini_Control-Monad-Catch.html
+++ b/mini_Control-Monad-Catch.html
@@ -1,8 +1,4 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Monad.Catch</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
 window.onload = function () {pageLoad();};
 //]]>
-</script></head><body id="mini"><div id="module-header"><p class="caption">Control.Monad.Catch</p></div><div id="interface"><h1>Typeclass
-</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadCatch" target="main">MonadCatch</a> m</p></div><h1>Transformer
-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch.html#t:CatchT" target="main">CatchT</a> m a</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Control-Monad-Catch.html#t:Catch" target="main">Catch</a> </p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:runCatch" target="main">runCatch</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:mapCatchT" target="main">mapCatchT</a></p></div><h1>Utilities
-</h1><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchAll" target="main">catchAll</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchIOError" target="main">catchIOError</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchJust" target="main">catchJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchIf" target="main">catchIf</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch.html#t:Handler" target="main">Handler</a> m a</p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catches" target="main">catches</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handle" target="main">handle</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handleJust" target="main">handleJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:try" target="main">try</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:tryJust" target="main">tryJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:onException" target="main">onException</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracket" target="main">bracket</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracket_" target="main">bracket_</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:finally" target="main">finally</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracketOnError" target="main">bracketOnError</a></p></div><h1>Re-exports from Control.Exception
-</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:Exception" target="main">Exception</a> e</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch.html#t:SomeException" target="main">SomeException</a> </p></div></div></body></html>
\ No newline at end of file
+</script></head><body id="mini"><div id="module-header"><p class="caption">Control.Monad.Catch</p></div><div id="interface"><h1>Typeclass</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadThrow" target="main">MonadThrow</a> m</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadCatch" target="main">MonadCatch</a> m</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:MonadMask" target="main">MonadMask</a> m</p></div><h1>Utilities</h1><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:mask_" target="main">mask_</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:uninterruptibleMask_" target="main">uninterruptibleMask_</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchAll" target="main">catchAll</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchIOError" target="main">catchIOError</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchJust" target="main">catchJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catchIf" target="main">catchIf</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch.html#t:Handler" target="main">Handler</a> m a</p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:catches" target="main">catches</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handle" target="main">handle</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handleAll" target="main">handleAll</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handleIOError" target="main">handleIOError</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handleJust" target="main">handleJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:handleIf" target="main">handleIf</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:try" target="main">try</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:tryJust" target="main">tryJust</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:onException" target="main">onException</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracket" target="main">bracket</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracket_" target="main">bracket_</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:finally" target="main">finally</a></p></div><div class="top"><p class="src"><a href="Control-Monad-Catch.html#v:bracketOnError" target="main">bracketOnError</a></p></div><h1>Re-exports from Control.Exception</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad-Catch.html#t:Exception" target="main">Exception</a> e</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Control-Monad-Catch.html#t:SomeException" target="main">SomeException</a></p></div></div></body></html>
\ No newline at end of file
diff --git a/ocean.css b/ocean.css
index e0ba8b0cc3753719e0ea5b4e08562f6a3cd0b3e2..de436324ff062ee9a4174b890c0dfc1ac4c3568a 100644
--- a/ocean.css
+++ b/ocean.css
@@ -49,14 +49,14 @@ a[href]:hover { text-decoration:underline; }
    For reasons, see:
       http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
  */
- 
+
 body {
 	font:13px/1.4 sans-serif;
 	*font-size:small; /* for IE */
 	*font:x-small; /* for IE in quirks mode */
 }
 
-h1 { font-size: 146.5%; /* 19pt */ } 
+h1 { font-size: 146.5%; /* 19pt */ }
 h2 { font-size: 131%;   /* 17pt */ }
 h3 { font-size: 116%;   /* 15pt */ }
 h4 { font-size: 100%;   /* 13pt */ }
@@ -98,7 +98,7 @@ pre, code, kbd, samp, tt, .src {
 
 /* @group Common */
 
-.caption, h1, h2, h3, h4, h5, h6 { 
+.caption, h1, h2, h3, h4, h5, h6 {
   font-weight: bold;
   color: rgb(78,98,114);
   margin: 0.8em 0 0.4em;
@@ -122,7 +122,7 @@ ul.links {
 
 ul.links li {
   display: inline;
-  border-left: 1px solid #d5d5d5; 
+  border-left: 1px solid #d5d5d5;
   white-space: nowrap;
   padding: 0;
 }
@@ -378,6 +378,19 @@ div#style-menu-holder {
   margin: 0 -0.5em 0 0.5em;
 }
 
+#interface span.fixity {
+  color: #919191;
+  border-left: 1px solid #919191;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0 -1em 0 1em;
+}
+
+#interface span.rightedge {
+  border-left: 1px solid #919191;
+  padding: 0.2em 0 0.2em 0;
+  margin: 0 0 0 1em;
+}
+
 #interface table { border-spacing: 2px; }
 #interface td {
   vertical-align: top;
@@ -420,6 +433,18 @@ div#style-menu-holder {
   margin: 0;
 }
 
+/* Render short-style data instances */
+.inst ul {
+  height: 100%;
+  padding: 0.5em;
+  margin: 0;
+}
+
+.inst, .inst li {
+  list-style: none;
+  margin-left: 1em;
+}
+
 .top p.src {
   border-top: 1px solid #ccc;
 }
@@ -429,6 +454,10 @@ div#style-menu-holder {
   padding-left: 2em;
 }
 
+.warning {
+  color: red;
+}
+
 .arguments {
   margin-top: -0.4em;
 }
@@ -453,13 +482,19 @@ div#style-menu-holder {
 
 /* @group Auxillary Pages */
 
+
+.extension-list {
+    list-style-type: none;
+    margin-left: 0;
+}
+
 #mini {
   margin: 0 auto;
   padding: 0 1em 1em;
 }
 
 #mini > * {
-  font-size: 93%; /* 12pt */  
+  font-size: 93%; /* 12pt */
 }
 
 #mini #module-list .caption,
diff --git a/src/Control-Monad-Catch-Pure.html b/src/Control-Monad-Catch-Pure.html
new file mode 100644
index 0000000000000000000000000000000000000000..947cf8d200d3855ccbd08a75d6f089967a8e33fb
--- /dev/null
+++ b/src/Control-Monad-Catch-Pure.html
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
+<title>src/Control/Monad/Catch/Pure.hs</title>
+<link type='text/css' rel='stylesheet' href='hscolour.css' />
+</head>
+<body>
+<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE CPP #-}</span>
+<a name="line-2"></a><span class='hs-comment'>{-# LANGUAGE ExistentialQuantification #-}</span>
+<a name="line-3"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
+<a name="line-4"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
+<a name="line-5"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
+<a name="line-6"></a><span class='hs-comment'>{-# LANGUAGE MultiParamTypeClasses #-}</span>
+<a name="line-7"></a><span class='hs-comment'>{-# LANGUAGE UndecidableInstances #-}</span>
+<a name="line-8"></a>
+<a name="line-9"></a><span class='hs-cpp'>#if defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt;= 702</span>
+<a name="line-10"></a><span class='hs-comment'>{-# LANGUAGE Trustworthy #-}</span>
+<a name="line-11"></a><span class='hs-cpp'>#endif</span>
+<a name="line-12"></a>
+<a name="line-13"></a><span class='hs-cpp'>#ifndef MIN_VERSION_transformers</span>
+<a name="line-14"></a><span class='hs-cpp'>#define MIN_VERSION_transformers(x,y,z) 1</span>
+<a name="line-15"></a><span class='hs-cpp'>#endif</span>
+<a name="line-16"></a>
+<a name="line-17"></a><span class='hs-cpp'>#ifndef MIN_VERSION_mtl</span>
+<a name="line-18"></a><span class='hs-cpp'>#define MIN_VERSION_mtl(x,y,z) 1</span>
+<a name="line-19"></a><span class='hs-cpp'>#endif</span>
+<a name="line-20"></a>
+<a name="line-21"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
+<a name="line-22"></a><span class='hs-comment'>-- |</span>
+<a name="line-23"></a><span class='hs-comment'>-- Copyright   :  (C) Edward Kmett 2013-2014, (c) Google Inc. 2012</span>
+<a name="line-24"></a><span class='hs-comment'>-- License     :  BSD-style (see the file LICENSE)</span>
+<a name="line-25"></a><span class='hs-comment'>-- Maintainer  :  Edward Kmett &lt;ekmett@gmail.com&gt;</span>
+<a name="line-26"></a><span class='hs-comment'>-- Stability   :  experimental</span>
+<a name="line-27"></a><span class='hs-comment'>-- Portability :  non-portable</span>
+<a name="line-28"></a><span class='hs-comment'>--</span>
+<a name="line-29"></a><span class='hs-comment'>-- This module supplies a \'pure\' monad transformer that can be used for</span>
+<a name="line-30"></a><span class='hs-comment'>-- mock-testing code that throws exceptions, so long as those exceptions</span>
+<a name="line-31"></a><span class='hs-comment'>-- are always thrown with 'throwM'.</span>
+<a name="line-32"></a><span class='hs-comment'>--</span>
+<a name="line-33"></a><span class='hs-comment'>-- Do not mix 'CatchT' with 'IO'. Choose one or the other for the</span>
+<a name="line-34"></a><span class='hs-comment'>-- bottom of your transformer stack!</span>
+<a name="line-35"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
+<a name="line-36"></a>
+<a name="line-37"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Catch</span><span class='hs-varop'>.</span><span class='hs-conid'>Pure</span> <span class='hs-layout'>(</span>
+<a name="line-38"></a>    <span class='hs-comment'>-- * Transformer</span>
+<a name="line-39"></a>    <span class='hs-comment'>-- $transformer</span>
+<a name="line-40"></a>    <span class='hs-conid'>CatchT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>Catch</span>
+<a name="line-41"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>runCatch</span>
+<a name="line-42"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>mapCatchT</span>
+<a name="line-43"></a>
+<a name="line-44"></a>  <span class='hs-comment'>-- * Typeclass</span>
+<a name="line-45"></a>  <span class='hs-comment'>-- $mtl</span>
+<a name="line-46"></a>  <span class='hs-layout'>,</span> <span class='hs-keyword'>module</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Catch</span>
+<a name="line-47"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-48"></a>
+<a name="line-49"></a><span class='hs-cpp'>#if defined(__GLASGOW_HASKELL__) &amp;&amp; (__GLASGOW_HASKELL__ &gt;= 706)</span>
+<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
+<a name="line-51"></a><span class='hs-cpp'>#else</span>
+<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>catch</span><span class='hs-layout'>,</span> <span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
+<a name="line-53"></a><span class='hs-cpp'>#endif</span>
+<a name="line-54"></a>
+<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
+<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Catch</span>
+<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Reader</span>
+<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span>
+<a name="line-59"></a><span class='hs-cpp'>#if __GLASGOW_HASKELL__ &lt; 710</span>
+<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Foldable</span>
+<a name="line-61"></a><span class='hs-cpp'>#endif</span>
+<a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Functor</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span>
+<a name="line-63"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Traversable</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Traversable</span>
+<a name="line-64"></a>
+<a name="line-65"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-66"></a><span class='hs-comment'>-- $mtl</span>
+<a name="line-67"></a><span class='hs-comment'>-- The mtl style typeclass</span>
+<a name="line-68"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-69"></a>
+<a name="line-70"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-71"></a><span class='hs-comment'>-- $transformer</span>
+<a name="line-72"></a><span class='hs-comment'>-- The @transformers@-style monad transfomer</span>
+<a name="line-73"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-74"></a>
+<a name="line-75"></a><span class='hs-comment'>-- | Add 'Exception' handling abilities to a 'Monad'.</span>
+<a name="line-76"></a><span class='hs-comment'>--</span>
+<a name="line-77"></a><span class='hs-comment'>-- This should /never/ be used in combination with 'IO'. Think of 'CatchT'</span>
+<a name="line-78"></a><span class='hs-comment'>-- as an alternative base monad for use with mocking code that solely throws</span>
+<a name="line-79"></a><span class='hs-comment'>-- exceptions via 'throwM'.</span>
+<a name="line-80"></a><span class='hs-comment'>--</span>
+<a name="line-81"></a><span class='hs-comment'>-- Note: that 'IO' monad has these abilities already, so stacking 'CatchT' on top</span>
+<a name="line-82"></a><span class='hs-comment'>-- of it does not add any value and can possibly be confusing:</span>
+<a name="line-83"></a><span class='hs-comment'>--</span>
+<a name="line-84"></a><span class='hs-comment'>-- &gt;&gt;&gt; (error "Hello!" :: IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)</span>
+<a name="line-85"></a><span class='hs-comment'>-- Hello!</span>
+<a name="line-86"></a><span class='hs-comment'>--</span>
+<a name="line-87"></a><span class='hs-comment'>-- &gt;&gt;&gt; runCatchT $ (error "Hello!" :: CatchT IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)</span>
+<a name="line-88"></a><span class='hs-comment'>-- *** Exception: Hello!</span>
+<a name="line-89"></a><span class='hs-comment'>--</span>
+<a name="line-90"></a><span class='hs-comment'>-- &gt;&gt;&gt; runCatchT $ (throwM (ErrorCall "Hello!") :: CatchT IO ()) `catch` (\(e :: ErrorCall) -&gt; liftIO $ print e)</span>
+<a name="line-91"></a><span class='hs-comment'>-- Hello!</span>
+<a name="line-92"></a>
+<a name="line-93"></a><a name="CatchT"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>{</span> <span class='hs-varid'>runCatchT</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>}</span>
+<a name="line-94"></a>
+<a name="line-95"></a><a name="Catch"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-conid'>Identity</span>
+<a name="line-96"></a>
+<a name="line-97"></a><a name="runCatch"></a><span class='hs-definition'>runCatch</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Catch</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span>
+<a name="line-98"></a><span class='hs-definition'>runCatch</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runIdentity</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runCatchT</span>
+<a name="line-99"></a>
+<a name="line-100"></a><a name="instance%20Functor%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Functor</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-101"></a>  <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
+<a name="line-102"></a>
+<a name="line-103"></a><a name="instance%20Applicative%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-104"></a>  <span class='hs-varid'>pure</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-105"></a>  <span class='hs-layout'>(</span><span class='hs-varop'>&lt;*&gt;</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>ap</span>
+<a name="line-106"></a>
+<a name="line-107"></a><a name="instance%20Monad%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-108"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-109"></a>  <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
+<a name="line-110"></a>    <span class='hs-conid'>Left</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-111"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>k</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-112"></a>  <span class='hs-varid'>fail</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toException</span> <span class='hs-varop'>.</span> <span class='hs-varid'>userError</span>
+<a name="line-113"></a>
+<a name="line-114"></a><a name="instance%20MonadFix%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadFix</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadFix</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-115"></a>  <span class='hs-varid'>mfix</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mfix</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>of</span>
+<a name="line-116"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>r</span>
+<a name="line-117"></a>    <span class='hs-keyword'>_</span>       <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>error</span> <span class='hs-str'>"empty mfix argument"</span>
+<a name="line-118"></a>
+<a name="line-119"></a><a name="instance%20Foldable%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Foldable</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Foldable</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-120"></a>  <span class='hs-varid'>foldMap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldMap</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldMapEither</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
+<a name="line-121"></a>    <span class='hs-varid'>foldMapEither</span> <span class='hs-varid'>g</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>g</span> <span class='hs-varid'>a</span>
+<a name="line-122"></a>    <span class='hs-varid'>foldMapEither</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mempty</span>
+<a name="line-123"></a>
+<a name="line-124"></a><a name="instance%20Traversable%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Traversable</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Traversable</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-125"></a>  <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-conid'>Traversable</span><span class='hs-varop'>.</span><span class='hs-varid'>traverse</span> <span class='hs-layout'>(</span><span class='hs-varid'>traverseEither</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
+<a name="line-126"></a>    <span class='hs-varid'>traverseEither</span> <span class='hs-varid'>g</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Right</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>g</span> <span class='hs-varid'>a</span>
+<a name="line-127"></a>    <span class='hs-varid'>traverseEither</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pure</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-128"></a>
+<a name="line-129"></a><a name="instance%20Alternative%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Alternative</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-130"></a>  <span class='hs-varid'>empty</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mzero</span>
+<a name="line-131"></a>  <span class='hs-layout'>(</span><span class='hs-varop'>&lt;|&gt;</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mplus</span>
+<a name="line-132"></a>
+<a name="line-133"></a><a name="instance%20MonadPlus%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadPlus</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-134"></a>  <span class='hs-varid'>mzero</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>$</span> <span class='hs-varid'>toException</span> <span class='hs-varop'>$</span> <span class='hs-varid'>userError</span> <span class='hs-str'>""</span>
+<a name="line-135"></a>  <span class='hs-varid'>mplus</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
+<a name="line-136"></a>    <span class='hs-conid'>Left</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>n</span>
+<a name="line-137"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-138"></a>
+<a name="line-139"></a><a name="instance%20MonadTrans%20CatchT"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadTrans</span> <span class='hs-conid'>CatchT</span> <span class='hs-keyword'>where</span>
+<a name="line-140"></a>  <span class='hs-varid'>lift</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
+<a name="line-141"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>m</span>
+<a name="line-142"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span>
+<a name="line-143"></a>
+<a name="line-144"></a><a name="instance%20MonadIO%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadIO</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadIO</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-145"></a>  <span class='hs-varid'>liftIO</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
+<a name="line-146"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>m</span>
+<a name="line-147"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span>
+<a name="line-148"></a>
+<a name="line-149"></a><a name="instance%20MonadThrow%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-150"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toException</span>
+<a name="line-151"></a><a name="instance%20MonadCatch%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-152"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
+<a name="line-153"></a>    <span class='hs-conid'>Left</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>fromException</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
+<a name="line-154"></a>      <span class='hs-conid'>Just</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varid'>e'</span><span class='hs-layout'>)</span>
+<a name="line-155"></a>      <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-156"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-157"></a><a name="instance%20MonadMask%20(CatchT%20m)"></a><span class='hs-comment'>-- | Note: This instance is only valid if the underlying monad has a single</span>
+<a name="line-158"></a><a name="instance%20MonadMask%20(CatchT%20m)"></a><span class='hs-comment'>-- exit point!</span>
+<a name="line-159"></a><a name="instance%20MonadMask%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-160"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varid'>id</span>
+<a name="line-161"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varid'>id</span>
+<a name="line-162"></a>
+<a name="line-163"></a><a name="instance%20MonadState%20s%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadState</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadState</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-164"></a>  <span class='hs-varid'>get</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varid'>get</span>
+<a name="line-165"></a>  <span class='hs-varid'>put</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>put</span>
+<a name="line-166"></a><span class='hs-cpp'>#if MIN_VERSION_mtl(2,1,0)</span>
+<a name="line-167"></a>  <span class='hs-varid'>state</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>state</span>
+<a name="line-168"></a><span class='hs-cpp'>#endif</span>
+<a name="line-169"></a>
+<a name="line-170"></a><a name="instance%20MonadReader%20e%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadReader</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadReader</span> <span class='hs-varid'>e</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-171"></a>  <span class='hs-varid'>ask</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varid'>ask</span>
+<a name="line-172"></a>  <span class='hs-varid'>local</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>local</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
+<a name="line-173"></a>
+<a name="line-174"></a><a name="instance%20MonadWriter%20w%20(CatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadWriter</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadWriter</span> <span class='hs-varid'>w</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-175"></a>  <span class='hs-varid'>tell</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>tell</span>
+<a name="line-176"></a>  <span class='hs-varid'>listen</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapCatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
+<a name="line-177"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>listen</span> <span class='hs-varid'>m</span>
+<a name="line-178"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$!</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span>
+<a name="line-179"></a>  <span class='hs-varid'>pass</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapCatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>pass</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
+<a name="line-180"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>m</span>
+<a name="line-181"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$!</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>of</span>
+<a name="line-182"></a>        <span class='hs-conid'>Left</span>  <span class='hs-varid'>l</span>      <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span>  <span class='hs-varid'>l</span><span class='hs-layout'>,</span> <span class='hs-varid'>id</span><span class='hs-layout'>)</span>
+<a name="line-183"></a>        <span class='hs-conid'>Right</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-184"></a><span class='hs-cpp'>#if MIN_VERSION_mtl(2,1,0)</span>
+<a name="line-185"></a>  <span class='hs-varid'>writer</span> <span class='hs-varid'>aw</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>writer</span> <span class='hs-varid'>aw</span><span class='hs-layout'>)</span>
+<a name="line-186"></a><span class='hs-cpp'>#endif</span>
+<a name="line-187"></a>
+<a name="line-188"></a><a name="instance%20MonadRWS%20r%20w%20s%20(CatchT%20m)%20--%20%7c%20Map%20the%20unwrapped%20computation%20using%20the%20given%20function.%20--%20--%20@'runCatchT'%20('mapCatchT'%20f%20m)%20=%20f%20('runCatchT'%20m)@%20mapCatchT%20::%20(m%20(Either%20SomeException%20a)%20-%3e%20n%20(Either%20SomeException%20b))%20-%3e%20CatchT%20m%20a%20-%3e%20CatchT%20n%20b%20mapCatchT%20f%20m%20=%20CatchT%20$%20f%20(runCatchT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadRWS</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadRWS</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
+<a name="line-189"></a>
+<a name="line-190"></a><a name="mapCatchT"></a><span class='hs-comment'>-- | Map the unwrapped computation using the given function.</span>
+<a name="line-191"></a><span class='hs-comment'>--</span>
+<a name="line-192"></a><span class='hs-comment'>-- @'runCatchT' ('mapCatchT' f m) = f ('runCatchT' m)@</span>
+<a name="line-193"></a><span class='hs-definition'>mapCatchT</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>n</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-194"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-195"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>n</span> <span class='hs-varid'>b</span>
+<a name="line-196"></a><span class='hs-definition'>mapCatchT</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>runCatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
+</pre></body>
+</html>
diff --git a/src/Control-Monad-Catch.html b/src/Control-Monad-Catch.html
index 4f71e7dfefbbae000d4166bf2871f5f4711f9cfb..c2537bab0f65308c330c795e07c052b42cbf342b 100644
--- a/src/Control-Monad-Catch.html
+++ b/src/Control-Monad-Catch.html
@@ -7,394 +7,460 @@
 <link type='text/css' rel='stylesheet' href='hscolour.css' />
 </head>
 <body>
-<pre><a name="line-1"></a><span class='hs-comment'>{-
-<a name="line-2"></a>Copyright 2012 Google Inc. All Rights Reserved.
-<a name="line-3"></a>
-<a name="line-4"></a>Licensed under the Apache License, Version 2.0 (the "License");
-<a name="line-5"></a>you may not use this file except in compliance with the License.
-<a name="line-6"></a>You may obtain a copy of the License at
-<a name="line-7"></a>
-<a name="line-8"></a>    <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE CPP #-}</span>
+<a name="line-2"></a><span class='hs-comment'>{-# LANGUAGE ExistentialQuantification #-}</span>
+<a name="line-3"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
+<a name="line-4"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
+<a name="line-5"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
+<a name="line-6"></a><span class='hs-comment'>{-# LANGUAGE MultiParamTypeClasses #-}</span>
+<a name="line-7"></a><span class='hs-comment'>{-# LANGUAGE UndecidableInstances #-}</span>
+<a name="line-8"></a><span class='hs-comment'>{-# LANGUAGE TypeFamilies #-}</span>
 <a name="line-9"></a>
-<a name="line-10"></a>Unless required by applicable law or agreed to in writing, software
-<a name="line-11"></a>distributed under the License is distributed on an "AS IS" BASIS,
-<a name="line-12"></a>WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-<a name="line-13"></a>See the License for the specific language governing permissions and
-<a name="line-14"></a>limitations under the License.
-<a name="line-15"></a>-}</span>
-<a name="line-16"></a>
-<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE CPP #-}</span>
-<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE ExistentialQuantification #-}</span>
-<a name="line-19"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
-<a name="line-20"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
-<a name="line-21"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
-<a name="line-22"></a><span class='hs-comment'>{-# LANGUAGE MultiParamTypeClasses #-}</span>
-<a name="line-23"></a><span class='hs-comment'>{-# LANGUAGE UndecidableInstances #-}</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class='hs-cpp'>#ifndef MIN_VERSION_transformers</span>
-<a name="line-26"></a><span class='hs-cpp'>#define MIN_VERSION_transformers(x,y,z) 1</span>
-<a name="line-27"></a><span class='hs-cpp'>#endif</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class='hs-cpp'>#ifndef MIN_VERSION_mtl</span>
-<a name="line-30"></a><span class='hs-cpp'>#define MIN_VERSION_mtl(x,y,z) 1</span>
-<a name="line-31"></a><span class='hs-cpp'>#endif</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
-<a name="line-34"></a><span class='hs-comment'>-- |</span>
-<a name="line-35"></a><span class='hs-comment'>-- Copyright :  (c) Edward Kmett 2013, (c) Google Inc. 2012</span>
-<a name="line-36"></a><span class='hs-comment'>-- License   :  BSD3</span>
-<a name="line-37"></a><span class='hs-comment'>-- Maintainer:  Edward Kmett &lt;ekmett@gmail.com&gt;</span>
-<a name="line-38"></a><span class='hs-comment'>-- Stability :  experimental</span>
-<a name="line-39"></a><span class='hs-comment'>-- Portability: non-portable</span>
-<a name="line-40"></a><span class='hs-comment'>--</span>
-<a name="line-41"></a><span class='hs-comment'>-- This module supports monads that can throw extensible exceptions. The</span>
-<a name="line-42"></a><span class='hs-comment'>-- exceptions are the very same from "Control.Exception", and the operations</span>
-<a name="line-43"></a><span class='hs-comment'>-- offered very similar, but here they are not limited to 'IO'.</span>
-<a name="line-44"></a><span class='hs-comment'>--</span>
-<a name="line-45"></a><span class='hs-comment'>-- This code is in the style of both transformers and mtl, and is compatible</span>
-<a name="line-46"></a><span class='hs-comment'>-- with them, though doesn't mimic the module structure or offer the complete</span>
-<a name="line-47"></a><span class='hs-comment'>-- range of features in those packages.</span>
-<a name="line-48"></a><span class='hs-comment'>--</span>
-<a name="line-49"></a><span class='hs-comment'>-- This is very similar to 'ErrorT' and 'MonadError', but based on features of</span>
-<a name="line-50"></a><span class='hs-comment'>-- "Control.Exception". In particular, it handles the complex case of</span>
-<a name="line-51"></a><span class='hs-comment'>-- asynchronous exceptions by including 'mask' in the typeclass. Note that the</span>
-<a name="line-52"></a><span class='hs-comment'>-- extensible extensions feature relies the RankNTypes language extension.</span>
-<a name="line-53"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Catch</span> <span class='hs-layout'>(</span>
-<a name="line-56"></a>    <span class='hs-comment'>-- * Typeclass</span>
-<a name="line-57"></a>    <span class='hs-comment'>-- $mtl</span>
-<a name="line-58"></a>    <span class='hs-conid'>MonadCatch</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
-<a name="line-59"></a>
-<a name="line-60"></a>    <span class='hs-comment'>-- * Transformer</span>
-<a name="line-61"></a>    <span class='hs-comment'>-- $transformer</span>
-<a name="line-62"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>CatchT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>Catch</span>
-<a name="line-63"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>runCatch</span>
-<a name="line-64"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>mapCatchT</span>
-<a name="line-65"></a>
-<a name="line-66"></a>    <span class='hs-comment'>-- * Utilities</span>
-<a name="line-67"></a>    <span class='hs-comment'>-- $utilities</span>
-<a name="line-68"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchAll</span>
-<a name="line-69"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchIOError</span>
-<a name="line-70"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchJust</span>
-<a name="line-71"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchIf</span>
-<a name="line-72"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Handler</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>catches</span>
-<a name="line-73"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handle</span>
-<a name="line-74"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handleJust</span>
-<a name="line-75"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>try</span>
-<a name="line-76"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>tryJust</span>
-<a name="line-77"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>onException</span>
-<a name="line-78"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracket</span>
-<a name="line-79"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracket_</span>
-<a name="line-80"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>finally</span>
-<a name="line-81"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracketOnError</span>
-<a name="line-82"></a>    <span class='hs-comment'>-- * Re-exports from Control.Exception</span>
-<a name="line-83"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
-<a name="line-84"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>SomeException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
-<a name="line-85"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-86"></a>
-<a name="line-87"></a><span class='hs-cpp'>#if defined(__GLASGOW_HASKELL__) &amp;&amp; (__GLASGOW_HASKELL__ &gt;= 706)</span>
-<a name="line-88"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
-<a name="line-89"></a><span class='hs-cpp'>#else</span>
-<a name="line-90"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>catch</span><span class='hs-layout'>,</span> <span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
-<a name="line-91"></a><span class='hs-cpp'>#endif</span>
-<a name="line-92"></a>
-<a name="line-93"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span>
-<a name="line-94"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>SomeException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-95"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>ControlException</span>
-<a name="line-96"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyRWS</span>
-<a name="line-97"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictRWS</span>
-<a name="line-98"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyS</span>
-<a name="line-99"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictS</span>
-<a name="line-100"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Writer</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyW</span>
-<a name="line-101"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Writer</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictW</span>
-<a name="line-102"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span>
-<a name="line-103"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Reader</span>
-<a name="line-104"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span>
-<a name="line-105"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Foldable</span>
-<a name="line-106"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Functor</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span>
-<a name="line-107"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Traversable</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Traversable</span>
-<a name="line-108"></a>
-<a name="line-109"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-110"></a><span class='hs-comment'>-- $mtl</span>
-<a name="line-111"></a><span class='hs-comment'>-- The mtl style typeclass</span>
-<a name="line-112"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-113"></a>
-<a name="line-114"></a><a name="MonadCatch"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
-<a name="line-115"></a>  <span class='hs-comment'>-- | Throw an exception. Note that this throws when this action is run in</span>
-<a name="line-116"></a>  <span class='hs-comment'>-- the monad @m@, not when it is applied. It is a generalization of</span>
-<a name="line-117"></a>  <span class='hs-comment'>-- "Control.Exception"'s 'ControlException.throwIO'.</span>
-<a name="line-118"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-119"></a>
-<a name="line-120"></a>  <span class='hs-comment'>-- | Provide a handler for exceptions thrown during execution of the first</span>
-<a name="line-121"></a>  <span class='hs-comment'>-- action. Note that type of the type of the argument to the handler will</span>
-<a name="line-122"></a>  <span class='hs-comment'>-- constrain which exceptions are caught. See "Control.Exception"'s</span>
-<a name="line-123"></a>  <span class='hs-comment'>-- 'ControlException.catch'.</span>
-<a name="line-124"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-125"></a>
-<a name="line-126"></a>  <span class='hs-comment'>-- | Runs an action with asynchronous exceptions diabled. The action is</span>
-<a name="line-127"></a>  <span class='hs-comment'>-- provided a method for restoring the async. environment to what it was</span>
-<a name="line-128"></a>  <span class='hs-comment'>-- at the 'mask' call. See "Control.Exception"'s 'ControlException.mask'.</span>
-<a name="line-129"></a>  <span class='hs-varid'>mask</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span><span class='hs-varop'>.</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span>
-<a name="line-130"></a>
-<a name="line-131"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-conid'>IO</span> <span class='hs-keyword'>where</span>
-<a name="line-132"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>throwIO</span>
-<a name="line-133"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>catch</span>
-<a name="line-134"></a>  <span class='hs-varid'>mask</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>mask</span>
-<a name="line-135"></a>
-<a name="line-136"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-137"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-138"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-layout'>(</span><span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runIdentityT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-139"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runIdentityT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
-<a name="line-140"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runIdentityT</span>
-<a name="line-141"></a>
-<a name="line-142"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-143"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-144"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-varid'>liftCatch</span> <span class='hs-varid'>catch</span>
-<a name="line-145"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
-<a name="line-146"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-10"></a><span class='hs-cpp'>#if defined(__GLASGOW_HASKELL__) &amp;&amp; __GLASGOW_HASKELL__ &gt;= 702</span>
+<a name="line-11"></a><span class='hs-comment'>{-# LANGUAGE Trustworthy #-}</span>
+<a name="line-12"></a><span class='hs-cpp'>#endif</span>
+<a name="line-13"></a>
+<a name="line-14"></a><span class='hs-cpp'>#ifndef MIN_VERSION_transformers</span>
+<a name="line-15"></a><span class='hs-cpp'>#define MIN_VERSION_transformers(x,y,z) 1</span>
+<a name="line-16"></a><span class='hs-cpp'>#endif</span>
+<a name="line-17"></a>
+<a name="line-18"></a><span class='hs-cpp'>#ifndef MIN_VERSION_mtl</span>
+<a name="line-19"></a><span class='hs-cpp'>#define MIN_VERSION_mtl(x,y,z) 1</span>
+<a name="line-20"></a><span class='hs-cpp'>#endif</span>
+<a name="line-21"></a>
+<a name="line-22"></a><span class='hs-comment'>{-# OPTIONS_GHC -fno-warn-deprecations #-}</span>
+<a name="line-23"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
+<a name="line-24"></a><span class='hs-comment'>-- |</span>
+<a name="line-25"></a><span class='hs-comment'>-- Copyright   :  (C) Edward Kmett 2013-2014, (c) Google Inc. 2012</span>
+<a name="line-26"></a><span class='hs-comment'>-- License     :  BSD-style (see the file LICENSE)</span>
+<a name="line-27"></a><span class='hs-comment'>-- Maintainer  :  Edward Kmett &lt;ekmett@gmail.com&gt;</span>
+<a name="line-28"></a><span class='hs-comment'>-- Stability   :  experimental</span>
+<a name="line-29"></a><span class='hs-comment'>-- Portability :  non-portable</span>
+<a name="line-30"></a><span class='hs-comment'>--</span>
+<a name="line-31"></a><span class='hs-comment'>-- This module supports monads that can throw extensible exceptions. The</span>
+<a name="line-32"></a><span class='hs-comment'>-- exceptions are the very same from "Control.Exception", and the operations</span>
+<a name="line-33"></a><span class='hs-comment'>-- offered very similar, but here they are not limited to 'IO'.</span>
+<a name="line-34"></a><span class='hs-comment'>--</span>
+<a name="line-35"></a><span class='hs-comment'>-- This code is in the style of both transformers and mtl, and is compatible</span>
+<a name="line-36"></a><span class='hs-comment'>-- with them, though doesn't mimic the module structure or offer the complete</span>
+<a name="line-37"></a><span class='hs-comment'>-- range of features in those packages.</span>
+<a name="line-38"></a><span class='hs-comment'>--</span>
+<a name="line-39"></a><span class='hs-comment'>-- This is very similar to 'ErrorT' and 'MonadError', but based on features of</span>
+<a name="line-40"></a><span class='hs-comment'>-- "Control.Exception". In particular, it handles the complex case of</span>
+<a name="line-41"></a><span class='hs-comment'>-- asynchronous exceptions by including 'mask' in the typeclass. Note that the</span>
+<a name="line-42"></a><span class='hs-comment'>-- extensible extensions feature relies on the RankNTypes language extension.</span>
+<a name="line-43"></a><span class='hs-comment'>--------------------------------------------------------------------</span>
+<a name="line-44"></a>
+<a name="line-45"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Catch</span> <span class='hs-layout'>(</span>
+<a name="line-46"></a>    <span class='hs-comment'>-- * Typeclass</span>
+<a name="line-47"></a>    <span class='hs-comment'>-- $mtl</span>
+<a name="line-48"></a>    <span class='hs-conid'>MonadThrow</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
+<a name="line-49"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>MonadCatch</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
+<a name="line-50"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>MonadMask</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
+<a name="line-51"></a>
+<a name="line-52"></a>    <span class='hs-comment'>-- * Utilities</span>
+<a name="line-53"></a>    <span class='hs-comment'>-- $utilities</span>
+<a name="line-54"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>mask_</span>
+<a name="line-55"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>uninterruptibleMask_</span>
+<a name="line-56"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchAll</span>
+<a name="line-57"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchIOError</span>
+<a name="line-58"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchJust</span>
+<a name="line-59"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>catchIf</span>
+<a name="line-60"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Handler</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>catches</span>
+<a name="line-61"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handle</span>
+<a name="line-62"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handleAll</span>
+<a name="line-63"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handleIOError</span>
+<a name="line-64"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handleJust</span>
+<a name="line-65"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>handleIf</span>
+<a name="line-66"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>try</span>
+<a name="line-67"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>tryJust</span>
+<a name="line-68"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>onException</span>
+<a name="line-69"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracket</span>
+<a name="line-70"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracket_</span>
+<a name="line-71"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>finally</span>
+<a name="line-72"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>bracketOnError</span>
+<a name="line-73"></a>    <span class='hs-comment'>-- * Re-exports from Control.Exception</span>
+<a name="line-74"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
+<a name="line-75"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>SomeException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
+<a name="line-76"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-77"></a>
+<a name="line-78"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>SomeException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-79"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>ControlException</span>
+<a name="line-80"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>STM</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>STM</span>
+<a name="line-81"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyRWS</span>
+<a name="line-82"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>RWS</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictRWS</span>
+<a name="line-83"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyS</span>
+<a name="line-84"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictS</span>
+<a name="line-85"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Writer</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>LazyW</span>
+<a name="line-86"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Writer</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>StrictW</span>
+<a name="line-87"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>STM</span> <span class='hs-layout'>(</span><span class='hs-conid'>STM</span><span class='hs-layout'>)</span>
+<a name="line-88"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span> <span class='hs-layout'>(</span><span class='hs-conid'>ListT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>runListT</span><span class='hs-layout'>)</span>
+<a name="line-89"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>MaybeT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>runMaybeT</span><span class='hs-layout'>)</span>
+<a name="line-90"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span> <span class='hs-layout'>(</span><span class='hs-conid'>ErrorT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>Error</span><span class='hs-layout'>,</span> <span class='hs-varid'>runErrorT</span><span class='hs-layout'>)</span>
+<a name="line-91"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Except</span> <span class='hs-layout'>(</span><span class='hs-conid'>ExceptT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>runExceptT</span><span class='hs-layout'>)</span>
+<a name="line-92"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Cont</span> <span class='hs-layout'>(</span><span class='hs-conid'>ContT</span><span class='hs-layout'>)</span>
+<a name="line-93"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span>
+<a name="line-94"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Reader</span>
+<a name="line-95"></a>
+<a name="line-96"></a><span class='hs-cpp'>#if __GLASGOW_HASKELL__ &lt; 706</span>
+<a name="line-97"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>catch</span><span class='hs-layout'>,</span> <span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
+<a name="line-98"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span>
+<a name="line-99"></a><span class='hs-cpp'>#elif __GLASGOW_HASKELL__ &lt; 710</span>
+<a name="line-100"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldr</span><span class='hs-layout'>)</span>
+<a name="line-101"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Foldable</span>
+<a name="line-102"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span>
+<a name="line-103"></a><span class='hs-cpp'>#endif</span>
+<a name="line-104"></a>
+<a name="line-105"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-106"></a><span class='hs-comment'>-- $mtl</span>
+<a name="line-107"></a><span class='hs-comment'>-- The mtl style typeclass</span>
+<a name="line-108"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-109"></a>
+<a name="line-110"></a><a name="MonadThrow"></a><span class='hs-comment'>-- | A class for monads in which exceptions may be thrown.</span>
+<a name="line-111"></a><a name="MonadThrow"></a><span class='hs-comment'>--</span>
+<a name="line-112"></a><a name="MonadThrow"></a><span class='hs-comment'>-- Instances should obey the following law:</span>
+<a name="line-113"></a><a name="MonadThrow"></a><span class='hs-comment'>--</span>
+<a name="line-114"></a><a name="MonadThrow"></a><span class='hs-comment'>-- &gt; throwM e &gt;&gt; x = throwM e</span>
+<a name="line-115"></a><a name="MonadThrow"></a><span class='hs-comment'>--</span>
+<a name="line-116"></a><a name="MonadThrow"></a><span class='hs-comment'>-- In other words, throwing an exception short-circuits the rest of the monadic</span>
+<a name="line-117"></a><a name="MonadThrow"></a><span class='hs-comment'>-- computation.</span>
+<a name="line-118"></a><a name="MonadThrow"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
+<a name="line-119"></a>  <span class='hs-comment'>-- | Throw an exception. Note that this throws when this action is run in</span>
+<a name="line-120"></a>  <span class='hs-comment'>-- the monad @m@, not when it is applied. It is a generalization of</span>
+<a name="line-121"></a>  <span class='hs-comment'>-- "Control.Exception"'s 'ControlException.throwIO'.</span>
+<a name="line-122"></a>  <span class='hs-comment'>--</span>
+<a name="line-123"></a>  <span class='hs-comment'>-- Should satisfy the law:</span>
+<a name="line-124"></a>  <span class='hs-comment'>--</span>
+<a name="line-125"></a>  <span class='hs-comment'>-- &gt; throwM e &gt;&gt; f = throwM e</span>
+<a name="line-126"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-127"></a>
+<a name="line-128"></a><a name="MonadCatch"></a><span class='hs-comment'>-- | A class for monads which allow exceptions to be caught, in particular</span>
+<a name="line-129"></a><a name="MonadCatch"></a><span class='hs-comment'>-- exceptions which were thrown by 'throwM'.</span>
+<a name="line-130"></a><a name="MonadCatch"></a><span class='hs-comment'>--</span>
+<a name="line-131"></a><a name="MonadCatch"></a><span class='hs-comment'>-- Instances should obey the following law:</span>
+<a name="line-132"></a><a name="MonadCatch"></a><span class='hs-comment'>--</span>
+<a name="line-133"></a><a name="MonadCatch"></a><span class='hs-comment'>-- &gt; catch (throwM e) f = f e</span>
+<a name="line-134"></a><a name="MonadCatch"></a><span class='hs-comment'>--</span>
+<a name="line-135"></a><a name="MonadCatch"></a><span class='hs-comment'>-- Note that the ability to catch an exception does /not/ guarantee that we can</span>
+<a name="line-136"></a><a name="MonadCatch"></a><span class='hs-comment'>-- deal with all possible exit points from a computation. Some monads, such as</span>
+<a name="line-137"></a><a name="MonadCatch"></a><span class='hs-comment'>-- continuation-based stacks, allow for more than just a success/failure</span>
+<a name="line-138"></a><a name="MonadCatch"></a><span class='hs-comment'>-- strategy, and therefore @catch@ /cannot/ be used by those monads to properly</span>
+<a name="line-139"></a><a name="MonadCatch"></a><span class='hs-comment'>-- implement a function such as @finally@. For more information, see</span>
+<a name="line-140"></a><a name="MonadCatch"></a><span class='hs-comment'>-- 'MonadMask'.</span>
+<a name="line-141"></a><a name="MonadCatch"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
+<a name="line-142"></a>  <span class='hs-comment'>-- | Provide a handler for exceptions thrown during execution of the first</span>
+<a name="line-143"></a>  <span class='hs-comment'>-- action. Note that type of the type of the argument to the handler will</span>
+<a name="line-144"></a>  <span class='hs-comment'>-- constrain which exceptions are caught. See "Control.Exception"'s</span>
+<a name="line-145"></a>  <span class='hs-comment'>-- 'ControlException.catch'.</span>
+<a name="line-146"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
 <a name="line-147"></a>
-<a name="line-148"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-149"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-150"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-varid'>liftCatch</span> <span class='hs-varid'>catch</span>
-<a name="line-151"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
-<a name="line-152"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
-<a name="line-153"></a>
-<a name="line-154"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-155"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-156"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span>
-<a name="line-157"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Reader</span><span class='hs-varop'>.</span><span class='hs-varid'>runReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
-<a name="line-158"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
-<a name="line-159"></a>
-<a name="line-160"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-161"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-162"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>`</span><span class='hs-varid'>catch</span> <span class='hs-varop'>`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-163"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
-<a name="line-164"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
-<a name="line-165"></a>
-<a name="line-166"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-167"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-168"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>`</span><span class='hs-varid'>catch</span> <span class='hs-varop'>`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-169"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
-<a name="line-170"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
-<a name="line-171"></a>
-<a name="line-172"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-173"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-174"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
-<a name="line-175"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
-<a name="line-176"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
-<a name="line-177"></a>
-<a name="line-178"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-179"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-180"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
-<a name="line-181"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
-<a name="line-182"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
-<a name="line-183"></a>
-<a name="line-184"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-185"></a><span class='hs-comment'>-- $transformer</span>
-<a name="line-186"></a><span class='hs-comment'>-- The @transformers@-style monad transfomer</span>
-<a name="line-187"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-188"></a>
-<a name="line-189"></a><a name="CatchT"></a><span class='hs-comment'>-- | Add 'Exception' handling abilities to a 'Monad'.</span>
-<a name="line-190"></a><a name="CatchT"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>{</span> <span class='hs-varid'>runCatchT</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>}</span>
-<a name="line-191"></a>
-<a name="line-192"></a><a name="Catch"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-conid'>Identity</span>
+<a name="line-148"></a><a name="MonadMask"></a><span class='hs-comment'>-- | A class for monads which provide for the ability to account for all</span>
+<a name="line-149"></a><a name="MonadMask"></a><span class='hs-comment'>-- possible exit points from a computation, and to mask asynchronous</span>
+<a name="line-150"></a><a name="MonadMask"></a><span class='hs-comment'>-- exceptions. Continuation-based monads, and stacks such as @ErrorT e IO@</span>
+<a name="line-151"></a><a name="MonadMask"></a><span class='hs-comment'>-- which provide for multiple failure modes, are invalid instances of this</span>
+<a name="line-152"></a><a name="MonadMask"></a><span class='hs-comment'>-- class.</span>
+<a name="line-153"></a><a name="MonadMask"></a><span class='hs-comment'>--</span>
+<a name="line-154"></a><a name="MonadMask"></a><span class='hs-comment'>-- Note that this package /does/ provide a @MonadMask@ instance for @CatchT@.</span>
+<a name="line-155"></a><a name="MonadMask"></a><span class='hs-comment'>-- This instance is /only/ valid if the base monad provides no ability to</span>
+<a name="line-156"></a><a name="MonadMask"></a><span class='hs-comment'>-- provide multiple exit. For example, @IO@ or @Either@ would be invalid base</span>
+<a name="line-157"></a><a name="MonadMask"></a><span class='hs-comment'>-- monads, but @Reader@ or @State@ would be acceptable.</span>
+<a name="line-158"></a><a name="MonadMask"></a><span class='hs-comment'>--</span>
+<a name="line-159"></a><a name="MonadMask"></a><span class='hs-comment'>-- Instances should ensure that, in the following code:</span>
+<a name="line-160"></a><a name="MonadMask"></a><span class='hs-comment'>--</span>
+<a name="line-161"></a><a name="MonadMask"></a><span class='hs-comment'>-- &gt; f `finally` g</span>
+<a name="line-162"></a><a name="MonadMask"></a><span class='hs-comment'>--</span>
+<a name="line-163"></a><a name="MonadMask"></a><span class='hs-comment'>-- The action @g@ is called regardless of what occurs within @f@, including</span>
+<a name="line-164"></a><a name="MonadMask"></a><span class='hs-comment'>-- async exceptions.</span>
+<a name="line-165"></a><a name="MonadMask"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
+<a name="line-166"></a>  <span class='hs-comment'>-- | Runs an action with asynchronous exceptions disabled. The action is</span>
+<a name="line-167"></a>  <span class='hs-comment'>-- provided a method for restoring the async. environment to what it was</span>
+<a name="line-168"></a>  <span class='hs-comment'>-- at the 'mask' call. See "Control.Exception"'s 'ControlException.mask'.</span>
+<a name="line-169"></a>  <span class='hs-varid'>mask</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span><span class='hs-varop'>.</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span>
+<a name="line-170"></a>
+<a name="line-171"></a>  <span class='hs-comment'>-- | Like 'mask', but the masked computation is not interruptible (see</span>
+<a name="line-172"></a>  <span class='hs-comment'>-- "Control.Exception"'s 'ControlException.uninterruptibleMask'. WARNING:</span>
+<a name="line-173"></a>  <span class='hs-comment'>-- Only use if you need to mask exceptions around an interruptible operation</span>
+<a name="line-174"></a>  <span class='hs-comment'>-- AND you can guarantee the interruptible operation will only block for a</span>
+<a name="line-175"></a>  <span class='hs-comment'>-- short period of time. Otherwise you render the program/thread unresponsive</span>
+<a name="line-176"></a>  <span class='hs-comment'>-- and/or unkillable.</span>
+<a name="line-177"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span><span class='hs-varop'>.</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span>
+<a name="line-178"></a>
+<a name="line-179"></a><a name="instance%20MonadThrow%20%5b%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-conid'>[]</span> <span class='hs-keyword'>where</span>
+<a name="line-180"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
+<a name="line-181"></a><a name="instance%20MonadThrow%20Maybe"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-conid'>Maybe</span> <span class='hs-keyword'>where</span>
+<a name="line-182"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
+<a name="line-183"></a><a name="instance%20MonadThrow%20(Either%20e)"></a><span class='hs-keyword'>instance</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>~</span> <span class='hs-conid'>SomeException</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-184"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toException</span>
+<a name="line-185"></a>
+<a name="line-186"></a><a name="instance%20MonadThrow%20IO"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-conid'>IO</span> <span class='hs-keyword'>where</span>
+<a name="line-187"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>throwIO</span>
+<a name="line-188"></a><a name="instance%20MonadCatch%20IO"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-conid'>IO</span> <span class='hs-keyword'>where</span>
+<a name="line-189"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>catch</span>
+<a name="line-190"></a><a name="instance%20MonadMask%20IO"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadMask</span> <span class='hs-conid'>IO</span> <span class='hs-keyword'>where</span>
+<a name="line-191"></a>  <span class='hs-varid'>mask</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>mask</span>
+<a name="line-192"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>uninterruptibleMask</span>
 <a name="line-193"></a>
-<a name="line-194"></a><a name="runCatch"></a><span class='hs-definition'>runCatch</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Catch</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span>
-<a name="line-195"></a><span class='hs-definition'>runCatch</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runIdentity</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runCatchT</span>
-<a name="line-196"></a>
-<a name="line-197"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Functor</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-198"></a>  <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
-<a name="line-199"></a>
-<a name="line-200"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-201"></a>  <span class='hs-varid'>pure</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-202"></a>  <span class='hs-layout'>(</span><span class='hs-varop'>&lt;*&gt;</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>ap</span>
-<a name="line-203"></a>
-<a name="line-204"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-205"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-206"></a>  <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
-<a name="line-207"></a>    <span class='hs-conid'>Left</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-208"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>k</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-209"></a>  <span class='hs-varid'>fail</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toException</span> <span class='hs-varop'>.</span> <span class='hs-varid'>userError</span>
-<a name="line-210"></a>
-<a name="line-211"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadFix</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadFix</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-212"></a>  <span class='hs-varid'>mfix</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mfix</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>of</span>
-<a name="line-213"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>r</span>
-<a name="line-214"></a>    <span class='hs-keyword'>_</span>       <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>error</span> <span class='hs-str'>"empty mfix argument"</span>
-<a name="line-215"></a>
-<a name="line-216"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Foldable</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Foldable</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-217"></a>  <span class='hs-varid'>foldMap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldMap</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldMapEither</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
-<a name="line-218"></a>    <span class='hs-varid'>foldMapEither</span> <span class='hs-varid'>g</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>g</span> <span class='hs-varid'>a</span>
-<a name="line-219"></a>    <span class='hs-varid'>foldMapEither</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mempty</span>
-<a name="line-220"></a>
-<a name="line-221"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Traversable</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Traversable</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-222"></a>  <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-conid'>Traversable</span><span class='hs-varop'>.</span><span class='hs-varid'>traverse</span> <span class='hs-layout'>(</span><span class='hs-varid'>traverseEither</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-varid'>m</span> <span class='hs-keyword'>where</span>
-<a name="line-223"></a>    <span class='hs-varid'>traverseEither</span> <span class='hs-varid'>g</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Right</span> <span class='hs-varop'>&lt;$&gt;</span> <span class='hs-varid'>g</span> <span class='hs-varid'>a</span>
-<a name="line-224"></a>    <span class='hs-varid'>traverseEither</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pure</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-225"></a>
-<a name="line-226"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Alternative</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-227"></a>  <span class='hs-varid'>empty</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mzero</span>
-<a name="line-228"></a>  <span class='hs-layout'>(</span><span class='hs-varop'>&lt;|&gt;</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mplus</span>
-<a name="line-229"></a>
-<a name="line-230"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadPlus</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-231"></a>  <span class='hs-varid'>mzero</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>$</span> <span class='hs-varid'>toException</span> <span class='hs-varop'>$</span> <span class='hs-varid'>userError</span> <span class='hs-str'>""</span>
-<a name="line-232"></a>  <span class='hs-varid'>mplus</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
-<a name="line-233"></a>    <span class='hs-conid'>Left</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>n</span>
-<a name="line-234"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-235"></a>
-<a name="line-236"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadTrans</span> <span class='hs-conid'>CatchT</span> <span class='hs-keyword'>where</span>
-<a name="line-237"></a>  <span class='hs-varid'>lift</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
-<a name="line-238"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>m</span>
-<a name="line-239"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span>
-<a name="line-240"></a>
-<a name="line-241"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadIO</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadIO</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-242"></a>  <span class='hs-varid'>liftIO</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
-<a name="line-243"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varid'>m</span>
-<a name="line-244"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span>
-<a name="line-245"></a>
-<a name="line-246"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-247"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toException</span>
-<a name="line-248"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ea</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>ea</span> <span class='hs-keyword'>of</span>
-<a name="line-249"></a>    <span class='hs-conid'>Left</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>fromException</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>of</span>
-<a name="line-250"></a>      <span class='hs-conid'>Just</span> <span class='hs-varid'>e'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runCatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varid'>e'</span><span class='hs-layout'>)</span>
-<a name="line-251"></a>      <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-252"></a>    <span class='hs-conid'>Right</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-253"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varid'>id</span>
-<a name="line-254"></a>
-<a name="line-255"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadState</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadState</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-256"></a>  <span class='hs-varid'>get</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varid'>get</span>
-<a name="line-257"></a>  <span class='hs-varid'>put</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>put</span>
-<a name="line-258"></a><span class='hs-cpp'>#if MIN_VERSION_mtl(2,1,0)</span>
-<a name="line-259"></a>  <span class='hs-varid'>state</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>state</span>
-<a name="line-260"></a><span class='hs-cpp'>#endif</span>
-<a name="line-261"></a>
-<a name="line-262"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadReader</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadReader</span> <span class='hs-varid'>e</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-263"></a>  <span class='hs-varid'>ask</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varid'>ask</span>
-<a name="line-264"></a>  <span class='hs-varid'>local</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-varid'>local</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
-<a name="line-265"></a>
-<a name="line-266"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadWriter</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadWriter</span> <span class='hs-varid'>w</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-267"></a>  <span class='hs-varid'>tell</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>tell</span>
-<a name="line-268"></a>  <span class='hs-varid'>listen</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapCatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
-<a name="line-269"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>listen</span> <span class='hs-varid'>m</span>
-<a name="line-270"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$!</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span>
-<a name="line-271"></a>  <span class='hs-varid'>pass</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapCatchT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>pass</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
-<a name="line-272"></a>    <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>m</span>
-<a name="line-273"></a>    <span class='hs-varid'>return</span> <span class='hs-varop'>$!</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>of</span>
-<a name="line-274"></a>        <span class='hs-conid'>Left</span>  <span class='hs-varid'>l</span>      <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span>  <span class='hs-varid'>l</span><span class='hs-layout'>,</span> <span class='hs-varid'>id</span><span class='hs-layout'>)</span>
-<a name="line-275"></a>        <span class='hs-conid'>Right</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
-<a name="line-276"></a><span class='hs-cpp'>#if MIN_VERSION_mtl(2,1,0)</span>
-<a name="line-277"></a>  <span class='hs-varid'>writer</span> <span class='hs-varid'>aw</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>writer</span> <span class='hs-varid'>aw</span><span class='hs-layout'>)</span>
-<a name="line-278"></a><span class='hs-cpp'>#endif</span>
-<a name="line-279"></a>
-<a name="line-280"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadRWS</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadRWS</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
-<a name="line-281"></a>
-<a name="line-282"></a><a name="mapCatchT"></a><span class='hs-comment'>-- | Map the unwrapped computation using the given function.</span>
-<a name="line-283"></a><span class='hs-comment'>--</span>
-<a name="line-284"></a><span class='hs-comment'>-- * @'runErrorT' ('mapErrorT' f m) = f ('runErrorT' m@)</span>
-<a name="line-285"></a><span class='hs-definition'>mapCatchT</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>n</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-conid'>SomeException</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-286"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-287"></a>          <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CatchT</span> <span class='hs-varid'>n</span> <span class='hs-varid'>b</span>
-<a name="line-288"></a><span class='hs-definition'>mapCatchT</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CatchT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>runCatchT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span>
+<a name="line-194"></a><a name="instance%20MonadThrow%20STM"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-conid'>STM</span> <span class='hs-keyword'>where</span>
+<a name="line-195"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>STM</span><span class='hs-varop'>.</span><span class='hs-varid'>throwSTM</span>
+<a name="line-196"></a><a name="instance%20MonadCatch%20STM"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-conid'>STM</span> <span class='hs-keyword'>where</span>
+<a name="line-197"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>STM</span><span class='hs-varop'>.</span><span class='hs-varid'>catchSTM</span>
+<a name="line-198"></a>
+<a name="line-199"></a><a name="instance%20MonadThrow%20(IdentityT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-200"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-201"></a><a name="instance%20MonadCatch%20(IdentityT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-202"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-layout'>(</span><span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runIdentityT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-203"></a><a name="instance%20MonadMask%20(IdentityT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-204"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runIdentityT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-205"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-206"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runIdentityT</span>
+<a name="line-207"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-208"></a>    <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runIdentityT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-209"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-210"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>IdentityT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runIdentityT</span>
+<a name="line-211"></a>
+<a name="line-212"></a><a name="instance%20MonadThrow%20(LazyS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-213"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-214"></a><a name="instance%20MonadCatch%20(LazyS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-215"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-varid'>liftCatch</span> <span class='hs-varid'>catch</span>
+<a name="line-216"></a><a name="instance%20MonadMask%20(LazyS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-217"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
+<a name="line-218"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-219"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-220"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-221"></a>    <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
+<a name="line-222"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-223"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-224"></a>
+<a name="line-225"></a><a name="instance%20MonadThrow%20(StrictS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-226"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-227"></a><a name="instance%20MonadCatch%20(StrictS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-228"></a>  <span class='hs-varid'>catch</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-varid'>liftCatch</span> <span class='hs-varid'>catch</span>
+<a name="line-229"></a><a name="instance%20MonadMask%20(StrictS.StateT%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-230"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
+<a name="line-231"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-232"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-233"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-234"></a>    <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-varid'>runStateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>
+<a name="line-235"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-236"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictS</span><span class='hs-varop'>.</span><span class='hs-conid'>StateT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-237"></a>
+<a name="line-238"></a><a name="instance%20MonadThrow%20(ReaderT%20r%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-239"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-240"></a><a name="instance%20MonadCatch%20(ReaderT%20r%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-241"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span>
+<a name="line-242"></a><a name="instance%20MonadMask%20(ReaderT%20r%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-243"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
+<a name="line-244"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-245"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-246"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-247"></a>    <span class='hs-conid'>ReaderT</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>runReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>e</span>
+<a name="line-248"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ReaderT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-249"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-layout'>(</span><span class='hs-varid'>u</span> <span class='hs-varop'>.</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-250"></a>
+<a name="line-251"></a><a name="instance%20MonadThrow%20(StrictW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-252"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-253"></a><a name="instance%20MonadCatch%20(StrictW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-254"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>`</span><span class='hs-varid'>catch</span> <span class='hs-varop'>`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-255"></a><a name="instance%20MonadMask%20(StrictW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-256"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-257"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-258"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-259"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-260"></a>    <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-261"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-262"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-263"></a>
+<a name="line-264"></a><a name="instance%20MonadThrow%20(LazyW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-265"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-266"></a><a name="instance%20MonadCatch%20(LazyW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-267"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>m</span> <span class='hs-varop'>`</span><span class='hs-varid'>catch</span> <span class='hs-varop'>`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-268"></a><a name="instance%20MonadMask%20(LazyW.WriterT%20w%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-269"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-270"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-271"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-272"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-273"></a>    <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span>
+<a name="line-274"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varid'>w</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-275"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-conid'>WriterT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyW</span><span class='hs-varop'>.</span><span class='hs-varid'>runWriterT</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
+<a name="line-276"></a>
+<a name="line-277"></a><a name="instance%20MonadThrow%20(LazyRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-278"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-279"></a><a name="instance%20MonadCatch%20(LazyRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-280"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-281"></a><a name="instance%20MonadMask%20(LazyRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-282"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-283"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-284"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
+<a name="line-285"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-286"></a>    <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-287"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-288"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>LazyRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
 <a name="line-289"></a>
-<a name="line-290"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-291"></a><span class='hs-comment'>-- $utilities</span>
-<a name="line-292"></a><span class='hs-comment'>-- These functions follow those from "Control.Exception", except that they are</span>
-<a name="line-293"></a><span class='hs-comment'>-- based on methods from the 'MonadCatch' typeclass. See</span>
-<a name="line-294"></a><span class='hs-comment'>-- "Control.Exception" for API usage.</span>
-<a name="line-295"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
-<a name="line-296"></a>
-<a name="line-297"></a><a name="catchAll"></a><span class='hs-comment'>-- | Catches all exceptions, and somewhat defeats the purpose of the extensible</span>
-<a name="line-298"></a><span class='hs-comment'>-- exception system. Use sparingly.</span>
-<a name="line-299"></a><span class='hs-definition'>catchAll</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>SomeException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-300"></a><span class='hs-definition'>catchAll</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span>
-<a name="line-301"></a>
-<a name="line-302"></a><a name="catchIOError"></a><span class='hs-comment'>-- | Catch all 'IOError' (eqv. 'IOException') exceptions. Still somewhat too</span>
-<a name="line-303"></a><span class='hs-comment'>-- general, but better than using 'catchAll'. See 'catchIf' for an easy way</span>
-<a name="line-304"></a><span class='hs-comment'>-- of catching specific 'IOError's based on the predicates in "System.IO.Error".</span>
-<a name="line-305"></a><span class='hs-definition'>catchIOError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IOError</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-306"></a><span class='hs-definition'>catchIOError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span>
-<a name="line-307"></a>
-<a name="line-308"></a><a name="catchIf"></a><span class='hs-comment'>-- | Catch exceptions only if they pass some predicate. Often useful with the</span>
-<a name="line-309"></a><span class='hs-comment'>-- predicates for testing 'IOError' values in "System.IO.Error".</span>
-<a name="line-310"></a><span class='hs-definition'>catchIf</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
-<a name="line-311"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-312"></a><span class='hs-definition'>catchIf</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>f</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>b</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-313"></a>
-<a name="line-314"></a><a name="catchJust"></a><span class='hs-comment'>-- | A more generalized way of determining which exceptions to catch at</span>
-<a name="line-315"></a><span class='hs-comment'>-- run time.</span>
-<a name="line-316"></a><span class='hs-definition'>catchJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
-<a name="line-317"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-318"></a><span class='hs-definition'>catchJust</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-varid'>e</span>
-<a name="line-319"></a>
-<a name="line-320"></a><a name="handle"></a><span class='hs-comment'>-- | Flipped 'catch'. See "Control.Exception"'s 'ControlException.handle'.</span>
-<a name="line-321"></a><span class='hs-definition'>handle</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-322"></a><span class='hs-definition'>handle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-varid'>catch</span>
-<a name="line-323"></a><span class='hs-comment'>{-# INLINE handle #-}</span>
-<a name="line-324"></a>
-<a name="line-325"></a><a name="handleJust"></a><span class='hs-comment'>-- | Flipped 'catchJust'. See "Control.Exception"'s 'ControlException.handleJust'.</span>
-<a name="line-326"></a><span class='hs-definition'>handleJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-327"></a><span class='hs-definition'>handleJust</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-layout'>(</span><span class='hs-varid'>catchJust</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
-<a name="line-328"></a><span class='hs-comment'>{-# INLINE handleJust #-}</span>
+<a name="line-290"></a><a name="instance%20MonadThrow%20(StrictRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-291"></a>  <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-292"></a><a name="instance%20MonadCatch%20(StrictRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-293"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>h</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>h</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-294"></a><a name="instance%20MonadMask%20(StrictRWS.RWST%20r%20w%20s%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monoid</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadMask</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-295"></a>  <span class='hs-varid'>mask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-296"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-297"></a>          <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
+<a name="line-298"></a>  <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span>
+<a name="line-299"></a>    <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>u</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-varid'>runRWST</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>$</span> <span class='hs-varid'>q</span> <span class='hs-varid'>u</span><span class='hs-layout'>)</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span>
+<a name="line-300"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>q</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>r</span> <span class='hs-varid'>w</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-301"></a>            <span class='hs-varid'>q</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>StrictRWS</span><span class='hs-varop'>.</span><span class='hs-conid'>RWST</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>u</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varid'>r</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
+<a name="line-302"></a>
+<a name="line-303"></a><a name="instance%20MonadThrow%20(ListT%20m)"></a><span class='hs-comment'>-- Transformers which are only instances of MonadThrow and MonadCatch, not MonadMask</span>
+<a name="line-304"></a><a name="instance%20MonadThrow%20(ListT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>ListT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-305"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>throwM</span>
+<a name="line-306"></a><a name="instance%20MonadCatch%20(ListT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ListT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-307"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ListT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ListT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runListT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-308"></a>
+<a name="line-309"></a><a name="instance%20MonadThrow%20(MaybeT%20m)"></a><span class='hs-comment'>-- | Throws exceptions into the base monad.</span>
+<a name="line-310"></a><a name="instance%20MonadThrow%20(MaybeT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>MaybeT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-311"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>throwM</span>
+<a name="line-312"></a><a name="instance%20MonadCatch%20(MaybeT%20m)"></a><span class='hs-comment'>-- | Catches exceptions from the base monad.</span>
+<a name="line-313"></a><a name="instance%20MonadCatch%20(MaybeT%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>MaybeT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-314"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>MaybeT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>MaybeT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runMaybeT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-315"></a>
+<a name="line-316"></a><a name="instance%20MonadThrow%20(ErrorT%20e%20m)"></a><span class='hs-comment'>-- | Throws exceptions into the base monad.</span>
+<a name="line-317"></a><a name="instance%20MonadThrow%20(ErrorT%20e%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Error</span> <span class='hs-varid'>e</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>ErrorT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-318"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>throwM</span>
+<a name="line-319"></a><a name="instance%20MonadCatch%20(ErrorT%20e%20m)"></a><span class='hs-comment'>-- | Catches exceptions from the base monad.</span>
+<a name="line-320"></a><a name="instance%20MonadCatch%20(ErrorT%20e%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Error</span> <span class='hs-varid'>e</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ErrorT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-321"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ErrorT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ErrorT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runErrorT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-322"></a>
+<a name="line-323"></a><a name="instance%20MonadThrow%20(ExceptT%20e%20m)"></a><span class='hs-comment'>-- | Throws exceptions into the base monad.</span>
+<a name="line-324"></a><a name="instance%20MonadThrow%20(ExceptT%20e%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>ExceptT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-325"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>throwM</span>
+<a name="line-326"></a><a name="instance%20MonadCatch%20(ExceptT%20e%20m)"></a><span class='hs-comment'>-- | Catches exceptions from the base monad.</span>
+<a name="line-327"></a><a name="instance%20MonadCatch%20(ExceptT%20e%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ExceptT</span> <span class='hs-varid'>e</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-328"></a>  <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>ExceptT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ExceptT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>catch</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>runExceptT</span> <span class='hs-varop'>.</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
 <a name="line-329"></a>
-<a name="line-330"></a><a name="try"></a><span class='hs-comment'>-- | Similar to 'catch', but returns an 'Either' result. See "Control.Exception"'s</span>
-<a name="line-331"></a><span class='hs-comment'>-- 'Control.Exception.try'.</span>
-<a name="line-332"></a><span class='hs-definition'>try</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-varid'>e</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-333"></a><span class='hs-definition'>try</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span><span class='hs-layout'>)</span>
+<a name="line-330"></a><a name="instance%20MonadThrow%20(ContT%20r%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>MonadThrow</span> <span class='hs-layout'>(</span><span class='hs-conid'>ContT</span> <span class='hs-varid'>r</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-331"></a>  <span class='hs-varid'>throwM</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>throwM</span>
+<a name="line-332"></a><span class='hs-comment'>-- I don't believe any valid of MonadCatch exists for ContT.</span>
+<a name="line-333"></a><span class='hs-comment'>-- instance MonadCatch m =&gt; MonadCatch (ContT r m) where</span>
 <a name="line-334"></a>
-<a name="line-335"></a><a name="tryJust"></a><span class='hs-comment'>-- | A variant of 'try' that takes an exception predicate to select</span>
-<a name="line-336"></a><span class='hs-comment'>-- which exceptions are caught. See "Control.Exception"'s 'ControlException.tryJust'</span>
-<a name="line-337"></a><span class='hs-definition'>tryJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
-<a name="line-338"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-varid'>b</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-339"></a><span class='hs-definition'>tryJust</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
-<a name="line-340"></a>
-<a name="line-341"></a><a name="Handler"></a><span class='hs-comment'>-- | Generalized version of 'ControlException.Handler'</span>
-<a name="line-342"></a><a name="Handler"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>e</span> <span class='hs-varop'>.</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Handler</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
-<a name="line-343"></a>
-<a name="line-344"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Functor</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
-<a name="line-345"></a>  <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftM</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span>
-<a name="line-346"></a>
-<a name="line-347"></a><a name="catches"></a><span class='hs-comment'>-- | Catches different sorts of exceptions. See "Control.Exception"'s 'ControlException.catches'</span>
-<a name="line-348"></a><span class='hs-definition'>catches</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Foldable</span> <span class='hs-varid'>f</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-349"></a><span class='hs-definition'>catches</span> <span class='hs-varid'>a</span> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-varid'>handler</span>
-<a name="line-350"></a>  <span class='hs-keyword'>where</span>
-<a name="line-351"></a>    <span class='hs-varid'>handler</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldr</span> <span class='hs-varid'>probe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>hs</span>
-<a name="line-352"></a>      <span class='hs-keyword'>where</span>
-<a name="line-353"></a>        <span class='hs-varid'>probe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maybe</span> <span class='hs-varid'>xs</span> <span class='hs-varid'>h</span> <span class='hs-layout'>(</span><span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>fromException</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
-<a name="line-354"></a>
-<a name="line-355"></a><a name="onException"></a><span class='hs-comment'>-- | Run an action only if an exception is thrown in the main action. The</span>
-<a name="line-356"></a><span class='hs-comment'>-- exception is not caught, simply rethrown.</span>
-<a name="line-357"></a><span class='hs-definition'>onException</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-358"></a><span class='hs-definition'>onException</span> <span class='hs-varid'>action</span> <span class='hs-varid'>handler</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>action</span> <span class='hs-varop'>`catchAll`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>handler</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
-<a name="line-359"></a>
-<a name="line-360"></a><a name="bracket"></a><span class='hs-comment'>-- | Generalized abstracted pattern of safe resource acquisition and release</span>
-<a name="line-361"></a><span class='hs-comment'>-- in the face of exceptions. The first action \"acquires\" some value, which</span>
-<a name="line-362"></a><span class='hs-comment'>-- is \"released\" by the second action at the end. The third action \"uses\"</span>
-<a name="line-363"></a><span class='hs-comment'>-- the value and its result is the result of the 'bracket'.</span>
-<a name="line-364"></a><span class='hs-comment'>--</span>
-<a name="line-365"></a><span class='hs-comment'>-- If an exception occurs during the use, the release still happens before the</span>
-<a name="line-366"></a><span class='hs-comment'>-- exception is rethrown.</span>
-<a name="line-367"></a><span class='hs-definition'>bracket</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
-<a name="line-368"></a><span class='hs-definition'>bracket</span> <span class='hs-varid'>acquire</span> <span class='hs-varid'>release</span> <span class='hs-varid'>use</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>unmasked</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
-<a name="line-369"></a>  <span class='hs-varid'>resource</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>acquire</span>
-<a name="line-370"></a>  <span class='hs-varid'>result</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>unmasked</span> <span class='hs-layout'>(</span><span class='hs-varid'>use</span> <span class='hs-varid'>resource</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
-<a name="line-371"></a>  <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
-<a name="line-372"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
+<a name="line-335"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-336"></a><span class='hs-comment'>-- $utilities</span>
+<a name="line-337"></a><span class='hs-comment'>-- These functions follow those from "Control.Exception", except that they are</span>
+<a name="line-338"></a><span class='hs-comment'>-- based on methods from the 'MonadCatch' typeclass. See</span>
+<a name="line-339"></a><span class='hs-comment'>-- "Control.Exception" for API usage.</span>
+<a name="line-340"></a><span class='hs-comment'>------------------------------------------------------------------------------</span>
+<a name="line-341"></a>
+<a name="line-342"></a><a name="mask_"></a><span class='hs-comment'>-- | Like 'mask', but does not pass a @restore@ action to the argument.</span>
+<a name="line-343"></a><span class='hs-definition'>mask_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-344"></a><span class='hs-definition'>mask_</span> <span class='hs-varid'>io</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>io</span>
+<a name="line-345"></a>
+<a name="line-346"></a><a name="uninterruptibleMask_"></a><span class='hs-comment'>-- | Like 'uninterruptibleMask', but does not pass a @restore@ action to the</span>
+<a name="line-347"></a><span class='hs-comment'>-- argument.</span>
+<a name="line-348"></a><span class='hs-definition'>uninterruptibleMask_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-349"></a><span class='hs-definition'>uninterruptibleMask_</span> <span class='hs-varid'>io</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>uninterruptibleMask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>io</span>
+<a name="line-350"></a>
+<a name="line-351"></a><a name="catchAll"></a><span class='hs-comment'>-- | Catches all exceptions, and somewhat defeats the purpose of the extensible</span>
+<a name="line-352"></a><span class='hs-comment'>-- exception system. Use sparingly.</span>
+<a name="line-353"></a><span class='hs-definition'>catchAll</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>SomeException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-354"></a><span class='hs-definition'>catchAll</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span>
+<a name="line-355"></a>
+<a name="line-356"></a><a name="catchIOError"></a><span class='hs-comment'>-- | Catch all 'IOError' (eqv. 'IOException') exceptions. Still somewhat too</span>
+<a name="line-357"></a><span class='hs-comment'>-- general, but better than using 'catchAll'. See 'catchIf' for an easy way</span>
+<a name="line-358"></a><span class='hs-comment'>-- of catching specific 'IOError's based on the predicates in "System.IO.Error".</span>
+<a name="line-359"></a><span class='hs-definition'>catchIOError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IOError</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-360"></a><span class='hs-definition'>catchIOError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span>
+<a name="line-361"></a>
+<a name="line-362"></a><a name="catchIf"></a><span class='hs-comment'>-- | Catch exceptions only if they pass some predicate. Often useful with the</span>
+<a name="line-363"></a><span class='hs-comment'>-- predicates for testing 'IOError' values in "System.IO.Error".</span>
+<a name="line-364"></a><span class='hs-definition'>catchIf</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
+<a name="line-365"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-366"></a><span class='hs-definition'>catchIf</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>f</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>b</span> <span class='hs-varid'>e</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-367"></a>
+<a name="line-368"></a><a name="catchJust"></a><span class='hs-comment'>-- | A more generalized way of determining which exceptions to catch at</span>
+<a name="line-369"></a><span class='hs-comment'>-- run time.</span>
+<a name="line-370"></a><span class='hs-definition'>catchJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
+<a name="line-371"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-372"></a><span class='hs-definition'>catchJust</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span> <span class='hs-varop'>$</span> <span class='hs-varid'>f</span> <span class='hs-varid'>e</span>
 <a name="line-373"></a>
-<a name="line-374"></a><a name="bracket_"></a><span class='hs-comment'>-- | Version of 'bracket' without any value being passed to the second and</span>
-<a name="line-375"></a><span class='hs-comment'>-- third actions.</span>
-<a name="line-376"></a><span class='hs-definition'>bracket_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
-<a name="line-377"></a><span class='hs-definition'>bracket_</span> <span class='hs-varid'>before</span> <span class='hs-varid'>after</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>bracket</span> <span class='hs-varid'>before</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>after</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>action</span><span class='hs-layout'>)</span>
+<a name="line-374"></a><a name="handle"></a><span class='hs-comment'>-- | Flipped 'catch'. See "Control.Exception"'s 'ControlException.handle'.</span>
+<a name="line-375"></a><span class='hs-definition'>handle</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-376"></a><span class='hs-definition'>handle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-varid'>catch</span>
+<a name="line-377"></a><span class='hs-comment'>{-# INLINE handle #-}</span>
 <a name="line-378"></a>
-<a name="line-379"></a><a name="finally"></a><span class='hs-comment'>-- | Perform an action with a finalizer action that is run, even if an</span>
-<a name="line-380"></a><span class='hs-comment'>-- exception occurs.</span>
-<a name="line-381"></a><span class='hs-definition'>finally</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
-<a name="line-382"></a><span class='hs-definition'>finally</span> <span class='hs-varid'>action</span> <span class='hs-varid'>finalizer</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>bracket_</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-varid'>finalizer</span> <span class='hs-varid'>action</span>
-<a name="line-383"></a>
-<a name="line-384"></a><a name="bracketOnError"></a><span class='hs-comment'>-- | Like 'bracket', but only performs the final action if there was an</span>
-<a name="line-385"></a><span class='hs-comment'>-- exception raised by the in-between computation.</span>
-<a name="line-386"></a><span class='hs-definition'>bracketOnError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
-<a name="line-387"></a><span class='hs-definition'>bracketOnError</span> <span class='hs-varid'>acquire</span> <span class='hs-varid'>release</span> <span class='hs-varid'>use</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>unmasked</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
-<a name="line-388"></a>  <span class='hs-varid'>resource</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>acquire</span>
-<a name="line-389"></a>  <span class='hs-varid'>unmasked</span> <span class='hs-layout'>(</span><span class='hs-varid'>use</span> <span class='hs-varid'>resource</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
+<a name="line-379"></a><a name="handleIOError"></a><span class='hs-comment'>-- | Flipped 'catchIOError'</span>
+<a name="line-380"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IOError</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-381"></a><span class='hs-definition'>handleIOError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>handle</span>
+<a name="line-382"></a>
+<a name="line-383"></a><a name="handleAll"></a><span class='hs-comment'>-- | Flipped 'catchAll'</span>
+<a name="line-384"></a><span class='hs-definition'>handleAll</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>SomeException</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-385"></a><span class='hs-definition'>handleAll</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>handle</span>
+<a name="line-386"></a>
+<a name="line-387"></a><a name="handleIf"></a><span class='hs-comment'>-- | Flipped 'catchIf'</span>
+<a name="line-388"></a><span class='hs-definition'>handleIf</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-389"></a><span class='hs-definition'>handleIf</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-layout'>(</span><span class='hs-varid'>catchIf</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-390"></a>
+<a name="line-391"></a><a name="handleJust"></a><span class='hs-comment'>-- | Flipped 'catchJust'. See "Control.Exception"'s 'ControlException.handleJust'.</span>
+<a name="line-392"></a><span class='hs-definition'>handleJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-393"></a><span class='hs-definition'>handleJust</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>flip</span> <span class='hs-layout'>(</span><span class='hs-varid'>catchJust</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span>
+<a name="line-394"></a><span class='hs-comment'>{-# INLINE handleJust #-}</span>
+<a name="line-395"></a>
+<a name="line-396"></a><a name="try"></a><span class='hs-comment'>-- | Similar to 'catch', but returns an 'Either' result. See "Control.Exception"'s</span>
+<a name="line-397"></a><span class='hs-comment'>-- 'Control.Exception.try'.</span>
+<a name="line-398"></a><span class='hs-definition'>try</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-varid'>e</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-399"></a><span class='hs-definition'>try</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span><span class='hs-layout'>)</span>
+<a name="line-400"></a>
+<a name="line-401"></a><a name="tryJust"></a><span class='hs-comment'>-- | A variant of 'try' that takes an exception predicate to select</span>
+<a name="line-402"></a><span class='hs-comment'>-- which exceptions are caught. See "Control.Exception"'s 'ControlException.tryJust'</span>
+<a name="line-403"></a><span class='hs-definition'>tryJust</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span>
+<a name="line-404"></a>    <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>Either</span> <span class='hs-varid'>b</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-405"></a><span class='hs-definition'>tryJust</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varop'>`liftM`</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Left</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
+<a name="line-406"></a>
+<a name="line-407"></a><a name="Handler"></a><span class='hs-comment'>-- | Generalized version of 'ControlException.Handler'</span>
+<a name="line-408"></a><a name="Handler"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>e</span> <span class='hs-varop'>.</span> <span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Handler</span> <span class='hs-layout'>(</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
+<a name="line-409"></a>
+<a name="line-410"></a><a name="instance%20Functor%20(Handler%20m)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>Functor</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
+<a name="line-411"></a>  <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Handler</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftM</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span>
+<a name="line-412"></a>
+<a name="line-413"></a><a name="catches"></a><span class='hs-comment'>-- | Catches different sorts of exceptions. See "Control.Exception"'s 'ControlException.catches'</span>
+<a name="line-414"></a><span class='hs-definition'>catches</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Foldable</span> <span class='hs-varid'>f</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-415"></a><span class='hs-definition'>catches</span> <span class='hs-varid'>a</span> <span class='hs-varid'>hs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>`catch`</span> <span class='hs-varid'>handler</span>
+<a name="line-416"></a>  <span class='hs-keyword'>where</span>
+<a name="line-417"></a>    <span class='hs-varid'>handler</span> <span class='hs-varid'>e</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>foldr</span> <span class='hs-varid'>probe</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span> <span class='hs-varid'>hs</span>
+<a name="line-418"></a>      <span class='hs-keyword'>where</span>
+<a name="line-419"></a>        <span class='hs-varid'>probe</span> <span class='hs-layout'>(</span><span class='hs-conid'>Handler</span> <span class='hs-varid'>h</span><span class='hs-layout'>)</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maybe</span> <span class='hs-varid'>xs</span> <span class='hs-varid'>h</span> <span class='hs-layout'>(</span><span class='hs-conid'>ControlException</span><span class='hs-varop'>.</span><span class='hs-varid'>fromException</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span>
+<a name="line-420"></a>
+<a name="line-421"></a><a name="onException"></a><span class='hs-comment'>-- | Run an action only if an exception is thrown in the main action. The</span>
+<a name="line-422"></a><span class='hs-comment'>-- exception is not caught, simply rethrown.</span>
+<a name="line-423"></a><span class='hs-definition'>onException</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadCatch</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-424"></a><span class='hs-definition'>onException</span> <span class='hs-varid'>action</span> <span class='hs-varid'>handler</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>action</span> <span class='hs-varop'>`catchAll`</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>e</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>handler</span> <span class='hs-varop'>&gt;&gt;</span> <span class='hs-varid'>throwM</span> <span class='hs-varid'>e</span>
+<a name="line-425"></a>
+<a name="line-426"></a><a name="bracket"></a><span class='hs-comment'>-- | Generalized abstracted pattern of safe resource acquisition and release</span>
+<a name="line-427"></a><span class='hs-comment'>-- in the face of exceptions. The first action \"acquires\" some value, which</span>
+<a name="line-428"></a><span class='hs-comment'>-- is \"released\" by the second action at the end. The third action \"uses\"</span>
+<a name="line-429"></a><span class='hs-comment'>-- the value and its result is the result of the 'bracket'.</span>
+<a name="line-430"></a><span class='hs-comment'>--</span>
+<a name="line-431"></a><span class='hs-comment'>-- If an exception occurs during the use, the release still happens before the</span>
+<a name="line-432"></a><span class='hs-comment'>-- exception is rethrown.</span>
+<a name="line-433"></a><span class='hs-definition'>bracket</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
+<a name="line-434"></a><span class='hs-definition'>bracket</span> <span class='hs-varid'>acquire</span> <span class='hs-varid'>release</span> <span class='hs-varid'>use</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>unmasked</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
+<a name="line-435"></a>  <span class='hs-varid'>resource</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>acquire</span>
+<a name="line-436"></a>  <span class='hs-varid'>result</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>unmasked</span> <span class='hs-layout'>(</span><span class='hs-varid'>use</span> <span class='hs-varid'>resource</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
+<a name="line-437"></a>  <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
+<a name="line-438"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
+<a name="line-439"></a>
+<a name="line-440"></a><a name="bracket_"></a><span class='hs-comment'>-- | Version of 'bracket' without any value being passed to the second and</span>
+<a name="line-441"></a><span class='hs-comment'>-- third actions.</span>
+<a name="line-442"></a><span class='hs-definition'>bracket_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
+<a name="line-443"></a><span class='hs-definition'>bracket_</span> <span class='hs-varid'>before</span> <span class='hs-varid'>after</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>bracket</span> <span class='hs-varid'>before</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>after</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>action</span><span class='hs-layout'>)</span>
+<a name="line-444"></a>
+<a name="line-445"></a><a name="finally"></a><span class='hs-comment'>-- | Perform an action with a finalizer action that is run, even if an</span>
+<a name="line-446"></a><span class='hs-comment'>-- exception occurs.</span>
+<a name="line-447"></a><span class='hs-definition'>finally</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
+<a name="line-448"></a><span class='hs-definition'>finally</span> <span class='hs-varid'>action</span> <span class='hs-varid'>finalizer</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>bracket_</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-varid'>finalizer</span> <span class='hs-varid'>action</span>
+<a name="line-449"></a>
+<a name="line-450"></a><a name="bracketOnError"></a><span class='hs-comment'>-- | Like 'bracket', but only performs the final action if there was an</span>
+<a name="line-451"></a><span class='hs-comment'>-- exception raised by the in-between computation.</span>
+<a name="line-452"></a><span class='hs-definition'>bracketOnError</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadMask</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>m</span> <span class='hs-varid'>c</span>
+<a name="line-453"></a><span class='hs-definition'>bracketOnError</span> <span class='hs-varid'>acquire</span> <span class='hs-varid'>release</span> <span class='hs-varid'>use</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mask</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>unmasked</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
+<a name="line-454"></a>  <span class='hs-varid'>resource</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>acquire</span>
+<a name="line-455"></a>  <span class='hs-varid'>unmasked</span> <span class='hs-layout'>(</span><span class='hs-varid'>use</span> <span class='hs-varid'>resource</span><span class='hs-layout'>)</span> <span class='hs-varop'>`onException`</span> <span class='hs-varid'>release</span> <span class='hs-varid'>resource</span>
 </pre></body>
 </html>