úδ7      !"#$%&'()*+,-./0123456 Safe-InferredHJKM $Distributivity with monad products.      None2346JKIAn automatic lifter. The idea of automatic lifting is due to Dan Piponi.   Safe-Inferred368JK /Transformers that distribute over one another.  For reorganizing a monad stack. #XPop out the underlying monad of a transformer, with a data structure to hold the state. $ Put the data structure back in. &The opposite of takeout. (,Left distributivity of a monad transformer. )Right distributivity.  !"#$%&'()*+,-./01234  !"#$%&'()%"#$4321&' !0/.-,+*() !"#$%&'()*+,-./01234None!";HM7An IO monad transformer.  I can't run 5;. Instead, I run the monad inside it. This is done using 6, and 8 from mmorph. ˜The combination is only a monad if the parameter monad isn't nondeterministic. IOT Maybe and IOT State are monads, but IOT [] and IOT Cont are not. Should be integrated with STT. 6 Run an IOT. 597:;<=>?@6ABCDEFG5656597;:<=>?@6ABCDEFGH      !"#$%&'()*+,-./0123456789:;<=>?:@ABBCDEFGHIJKLMMonadCompose-0.7.0.0Control.Monad.PlusMonadControl.Monad.LifterControl.Monad.DistributiveControl.Monad.IOT::+PlusunPlusinlinrmapPluscommassocassoc1 cancelLeft cancelRightrefldistr $fMMonad::+ $fMFunctor::+$fMonadTrans::+$fAlternative::+$fMonadPlus::+$fApplicative::+ $fFunctor::+ $fMonad::+Lifterlf $fLiftermm $fLiftermn $fLifterm::+$fLifterIdentityIdentity $fLifterSTST $fLifterIOIO $fLifterSTIO Rightdistrrdist LeftdistrldistTakeouttakeoutcombineswapputinputin1ldist'rdist'$fRightdistrReaderT$fRightdistrStateT$fRightdistrStateT0$fLeftdistrListT$fLeftdistrWriterT$fLeftdistrErrorT$fLeftdistrMaybeT$fTakeoutWriterT(,)$fTakeoutReaderTIdentity$fTakeoutStateT(,)$fTakeoutStateT(,)0IOTrunSequence mmorph-1.0.4Control.Monad.MorphhoistSeqNoneRet runSequence_squash_hoist $fMFunctorIOT $fMMonadIOT$fMonadTransIOT $fMonadIOIOT $fFunctorIOT$fApplicativeIOT $fMonadIOT