Îõ³h$L9      !"#$%&'()*+,-./012345678Safe.ÉÔÙ mmorph)A monad in the category of monads, using  from  as the analog of 9 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)) tmmorphEmbed a newly created  layer within an existing layer is analogous to (:)mmorph+A functor in the category of monads, using  as the analog of ;: 0hoist (f . g) = hoist f . hoist g hoist id = idmmorphLift a monad morphism from m to n$ into a monad morphism from (t m) to (t n)The first argument to Ô must be a monad morphism, even though the type system does not enforce thismmorphA function that  generalizes the < base monad to be any monad.mmorph Squash two  layers into a single layer is analogous to =mmorph Compose two  layer-building functions() is analogous to (>) mmorphEquivalent to () with the arguments flipped( ) is analogous to (?) mmorph An infix operator equivalent to ( ) is analogous to (:) mmorphEquivalent to ( ) with the arguments flipped( ) is analogous to (@)   2 2 2 2 Trustworthy567>?ÀÁÂÉÎÙòí mmorph"Composition of monad transformers.#mmorph#Transform the computation inside a  . !"# !"# 9 !9 Á      !"#$%%&'()*+,-./0123456789:;<=>?=>@=>A=BC=>D=EF=EG=>HÉ#mmorph-1.2.0-KaIDhbdiyYt5uM8VkxHIjHControl.Monad.MorphControl.Monad.Trans.Composetransformers-0.5.6.2Control.Monad.Trans.Classlift MonadTransMMonadembedMFunctorhoist generalizesquash>|><|<=<||>=$fMFunctorTYPELift$fMFunctorTYPEBackwards$fMFunctorTYPEProduct$fMFunctorTYPECompose$fMFunctorTYPEWriterT$fMFunctorTYPEWriterT0$fMFunctorTYPEStateT$fMFunctorTYPEStateT0$fMFunctorTYPERWST$fMFunctorTYPERWST0$fMFunctorTYPEReaderT$fMFunctorTYPEMaybeT$fMFunctorTYPEIdentityT$fMFunctorTYPEExceptT$fMMonadWriterT$fMMonadWriterT0$fMMonadReaderT$fMMonadMaybeT$fMMonadIdentityT$fMMonadExceptTComposeT getComposeT mapComposeT$fMFunctorTYPEComposeT$fMonadTransComposeT$fAlternativeComposeT$fApplicativeComposeT $fEqComposeT$fFoldableComposeT$fFunctorComposeT $fOrdComposeT$fReadComposeT$fShowComposeT$fTraversableComposeT$fMonadComposeT$fMonadContComposeT$fMonadErroreComposeT$fMonadFailComposeT$fMonadIOComposeT$fMonadPlusComposeT$fMonadReaderrComposeT$fMonadRWSrwsComposeT$fMonadStatesComposeT$fMonadWriterwComposeTbaseGHC.Basereturn=<<fmapData.Functor.IdentityIdentityjoin Control.Monad>=><=<>>=