úΖ¤     mainland@eecs.harvard.edu4Executes 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. The computation to run ,Handler to invoke if an exception is raised 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. The computation to run 7Computation to run afterward (even if an exception was  raised) JIf an exception is raised by the computation, then perform a final action  and re-raise the exception. The computation to run -Computation to run if an exception is raised 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). computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between  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.          exception-transformers-0.3.0.1Control.Monad.Exceptionbase GHC.Exception SomeException fromException toException Exception ExceptionT runExceptionTMonadAsyncExceptionmaskMonadExceptionthrowcatchfinally onExceptionbracketbracket_ mapExceptionT liftException