0      !"#$%&'()*+,-./ Safe-Infered~We often need to distinguish between various forms of Functor-like composition in Haskell in order to please the type system. 9 This lets us work with these representations uniformly. 00portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered 12345678   12345678portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferedportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered 9    9portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered;Ideally we would offer a way to lift comonad homomorphisms  but this isn'4t Haskell 98, so we settle for the most common case  here. 8 liftTrans :: (forall a. w a -> v a) -> t w a -> t v a * cohoist = liftTrans (Identity . extract) ::portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered;<=>?@ABCDEF  ;<=>?@ABCDEFportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered!Read the current position "Seek to an absolute location  seek s = peek s . duplicate #Seek to a relative location  seeks f = peeks f . duplicate $-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y %-Peek at a value at a given relative location  !"#$%GHIJKLMNOP  !"#$% !"#$%  !"#$%GHIJKLMNOPportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered&'()*+,-./QRSTUVWXYZ &'()*+,-./ )*+&'(,-./&'()*+,-./QRSTUVWXYZ[     !""#$%&'()*+,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acomonad-transformers-3.0Control.Comonad.Trans.IdentityData.Functor.CompositionData.Functor.CoproductControl.Comonad.Trans.ClassControl.Comonad.Hoist.ClassControl.Comonad.Trans.EnvControl.Comonad.Trans.StoreControl.Comonad.Trans.Tracedtransformers-0.3.0.0Control.Monad.Trans.Identity runIdentityT IdentityT Composition decomposecompose Coproduct getCoproductleftright coproduct ComonadTranslower ComonadHoistcohoistEnvTEnvenvrunEnvrunEnvT lowerEnvTaskaskslocalStoreTStorestorerunStore runStoreT experimentposseekseekspeekpeeksTracedT runTracedTTracedtraced runTracedtracelistenlistenscensor$fCompositionCompose$fContravariantCoproduct$fComonadCoproduct$fExtendCoproduct$fTraversable1Coproduct$fTraversableCoproduct$fFoldable1Coproduct$fFoldableCoproduct$fFunctorCoproduct$fComonadTransIdentityT$fComonadHoistIdentityT$fTraversableEnvT$fFoldableEnvT$fComonadApplyEnvT $fApplyEnvT$fComonadHoistEnvT$fComonadTransEnvT $fComonadEnvT $fExtendEnvT $fFunctorEnvT $fDataEnvT$fTypeableEnvT$fTypeable1EnvT$fComonadHoistStoreT$fComonadTransStoreT$fComonadStoreT$fExtendStoreT$fApplicativeStoreT$fComonadApplyStoreT $fApplyStoreT$fFunctorStoreT$fTypeableStoreT$fTypeable1StoreT$fTypeable1TracedT$fDistributiveTracedT$fComonadHoistTracedT$fComonadTransTracedT$fComonadTracedT$fExtendTracedT$fApplicativeTracedT$fComonadApplyTracedT$fApplyTracedT$fFunctorTracedT