úÎ%Œ#o      Safe-InferredGeneralized 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. A specialised variant of   with just a computation to run  afterward. Like  5, but only performs the final action if there was an 1 exception raised by the in-between computation. 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).  computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between computation to run first 7computation to run afterward (even if an exception was  raised) computation to run first ("acquire resource") computation to run last ("release resource") computation to run in-between  !"#$%&'(     !"#$%&'()          !"#$%&!MonadCatchIO-transformers-0.3.0.0Control.Monad.CatchIObase GHC.Exception fromException toException ExceptionHandler MonadCatchIOcatchblockunblockthrowtrytryJustcatchesbracket onExceptionbracket_finallybracketOnErrorControl.ExceptionControl.Exception.BaseGHC.IOthrowIO$fMonadCatchIOErrorT$fMonadCatchIOContT$fMonadCatchIOWriterT$fMonadCatchIOWriterT0$fMonadCatchIOStateT$fMonadCatchIOStateT0$fMonadCatchIOReaderT$fMonadCatchIORWST$fMonadCatchIORWST0$fMonadCatchIOMaybeT$fMonadCatchIOListT$fMonadCatchIOIdentityT$fMonadCatchIOIO