úÎ"À      P(c) Harvard University 2008-2011 (c) Geoffrey Mainland 2011-2014 BSD-stylemainland@cs.drexel.eduNone;HM4Executes a computation with asynchronous exceptions masked. The argument passed to ¥ is a function that takes as its argument another function, which can be used to restore the prevailing masking state within the context of the masked computation. Throw an exception. Catch an exception. íRun a computation and always perform a second, final computation even if an exception is raised. If a short-circuiting monad transformer such as ErrorT or MaybeT is used to transform a MonadException monad, then the implementation of finally| for the transformed monad must guarantee that the final action is also always performed when any short-circuiting occurs. fIf an exception is raised by the computation, then perform a final action and re-raise the exception.tWhen 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 install the necessary exception handler to release the resource in the event that an exception is raised during the computation. If an exception is raised, then = will re-raise the exception (after performing the release). A variant of D where the return value from the first computation is not required.DLift 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?Computation 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.4Control.Monad.Exceptionbase GHC.Exception fromException toException Exception SomeException 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