úÎ!¸ÿ     mainland@eecs.harvard.eduNone4Executes a computation with asynchronous exceptions masked. The  argument passed to * is a function that takes as its argument G another function, which can be used to restore the prevailing masking 5 state within the context of the masked computation. Throw an exception. Catch an exception. FRun a computation and always perform a second, final computation even I if an exception is raised. If a short-circuiting monad transformer such K as ErrorT or MaybeT is used to transform a MonadException monad, then the  implementation of finally/ for the transformed monad must guarantee that E the final action is also always performed when any short-circuiting  occurs. JIf an exception is raised by the computation, then perform a final action  and re-raise the exception. LWhen you want to acquire a resource, do some work with it, and then release ( the resource, it is a good idea to use  , because  will N install the necessary exception handler to release the resource in the event I that an exception is raised during the computation. If an exception is  raised, then 3 will re-raise the exception (after performing the  release).  A variant of 6 where the return value from the first computation is  not required. CLift the result of running a computation in a monad transformed by  . into another monad that supports exceptions. 1 The computation to run ,Handler to invoke if an exception is raised The computation to run 7Computation to run afterward (even if an exception was  raised) The computation to run -Computation to run if an exception is raised computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between  !"#$%&'()*+,-./01234  +   !"#$%&'()*+,-./012345      !"#$%&'()*+,-./012345678exception-transformers-0.3.0.3Control.Monad.Exceptionbase GHC.Exception SomeException fromException toException Exception ExceptionT runExceptionTMonadAsyncExceptionmaskMonadExceptionthrowcatchfinally onExceptionbracketbracket_ mapExceptionT liftException$fMonadAsyncExceptionWriterT$fMonadAsyncExceptionWriterT0$fMonadAsyncExceptionStateT$fMonadAsyncExceptionStateT0$fMonadAsyncExceptionReaderT$fMonadAsyncExceptionRWST$fMonadAsyncExceptionRWST0$fMonadAsyncExceptionMaybeT$fMonadAsyncExceptionListT$fMonadAsyncExceptionIdentityT$fMonadAsyncExceptionErrorT$fMonadExceptionWriterT$fMonadExceptionWriterT0$fMonadExceptionStateT$fMonadExceptionStateT0$fMonadExceptionReaderT$fMonadExceptionRWST$fMonadExceptionRWST0$fMonadExceptionMaybeT$fMonadExceptionListT$fMonadExceptionIdentityT$fMonadExceptionErrorT$fMonadExceptionSTM$fMonadAsyncExceptionIO$fMonadExceptionIO$fMonadAsyncExceptionExceptionT$fMonadIOExceptionT$fMonadExceptionExceptionT$fMonadFixExceptionT$fAlternativeExceptionT$fApplicativeExceptionT$fMonadPlusExceptionT$fMonadExceptionT$fFunctorExceptionT$fMonadTransExceptionT