úÎ8X     SafeIN )A monad in the category of monads, using  from  as the analog of  and  as the analog of (): \embed lift = id embed f (lift m) = f m embed g (embed f t) = embed (\m -> embed g (f m)) tEmbed a newly created  layer within an existing layer is analogous to ()+A functor in the category of monads, using  as the analog of : 0hoist (f . g) = hoist f . hoist g hoist id = idLift a monad morphism from m to n$ into a monad morphism from (t m) to (t n)A function that  generalizes the  base monad to be any monad. Squash two  layers into a single layer is analogous to  Compose two  layer-building functions() is analogous to () Equivalent to () with the arguments flipped( ) is analogous to ()  An infix operator equivalent to ( ) is analogous to () Equivalent to ( ) with the arguments flipped( ) is analogous to ()"  !"#$%&'()*+,-.     !"#$%&'()*+,-.   Safe4> "Composition of monad transformers. /01234567    /012345678      !"#$%&'()*+,-./0123456789:;<=>?@mmorp_G0RW5idFg3uHGe7GMtdiHZControl.Monad.MorphControl.Monad.Trans.Composetrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.Classlift MonadTransMMonadembedMFunctorhoist generalizesquash>|><|<=<||>=ComposeT getComposeTbaseGHC.Basereturn=<<fmapData.Functor.IdentityIdentityjoin Control.Monad>=><=<>>=$fMMonadWriterT$fMMonadWriterT0$fMMonadReaderT$fMMonadMaybeT $fMMonadListT$fMMonadIdentityT$fMMonadExceptT$fMMonadErrorT$fMFunctorLift$fMFunctorBackwards$fMFunctorProduct$fMFunctorCompose$fMFunctorWriterT$fMFunctorWriterT0$fMFunctorStateT$fMFunctorStateT0$fMFunctorRWST$fMFunctorRWST0$fMFunctorReaderT$fMFunctorMaybeT$fMFunctorListT$fMFunctorIdentityT$fMFunctorExceptT$fMFunctorErrorT$fTraversableComposeT$fFoldableComposeT$fMonadIOComposeT$fMonadPlusComposeT$fMonadComposeT$fAlternativeComposeT$fApplicativeComposeT$fFunctorComposeT$fMonadTransComposeT