úÎ$T"¹     Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of  Generalized version of   A variant of  3 where the return value from the first computation  is not required. computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between A specialised variant of   with just a computation to run  afterward. computation to run first 7computation to run afterward (even if an exception was  raised) Like  5, but only performs the final action if there was an 1 exception raised by the in-between computation. computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between 0Warning: this instance is somewhat contentious. JNote that in monads that fall under this instance (the most basic example  is  ErrorT e IO"), there are errors of two sorts:  9 exceptions, (i.e., exceptional values in the underlying IO monad);  error values of type e, introduced by the ErrorT e part of the monad. DThe instance takes no special action to deal with errors of type 2.  In particular,  * will not perform its second argument, if  its third argument decides to " exit early"! by throwing an error of type 2. &This may or may not be what you want. *See the mailing list thread starting with   Bhttp://www.mail-archive.com/haskell-cafe@haskell.org/msg82859.html  for some details. 0Warning: this instance is somewhat contentious. In the same way that the ErrorT e( instance may fail to perform the final  action, due to the " early exit"' behaviour of the monad, this instance H may perform the final action any number of times, due to the nonlinear # nature of the continuation monad. See the mailing list message   ;http://web.archiveorange.com/archive/v/nDNOvaYx1poDHZNlmlgh = for an example of what can go wrong (freeing memory twice).              !MonadCatchIO-transformers-0.2.2.2Control.Monad.CatchIObase GHC.Exception fromException toException ExceptionHandler MonadCatchIOcatchblockunblockthrowtrytryJustcatchesbracket onExceptionbracket_finallybracketOnErrorControl.ExceptionControl.Exception.BaseGHC.IOthrowIO$fMonadCatchIOErrorT$fMonadCatchIOContT