@6l      !" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W XYZ[\]^_`abcdefghijk 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. llportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered mnopqrst   mnopqrstportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferedportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered u    uportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered vwxyz vwxyzportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferedportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered {|}~ {|}~portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered  portable 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"#$%&'()*+ "#$%&'()*+ $%&"#'+()*"#$%&'()*+portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered "#$%&'()*+ portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered,-./012345 ,-./012345 ./0,-12345,-./012345 portable 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 6789:;<=>?@ 6789:;<=>?@ 89:67;<=>?@6789:;<=>?@portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Infered 6789:;<=>?@ portable provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedGRead the current position HSeek to an absolute location  seek s = peek s . duplicate ISeek to a relative location  seeks f = peeks f . duplicate J-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y K-Peek at a value at a given relative location ABCDEFGHIJK ABCDEFGHIJK CDEABFGHIJKABCDEFGHIJK portable provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedSRead the current position TSeek to an absolute location  seek s = peek s . duplicate USeek to a relative location  seeks f = peeks f . duplicate V-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y W-Peek at a value at a given relative location LMNOPQRSTUVW LMNOPQRSTUVW MNOLQPRSTUVWLMNOPQRSTUVWportable provisionalEdward Kmett <ekmett@gmail.com> Safe-InferedXYZ[\]^_`a XYZ[\]^_`a [\]XYZ^_`aXYZ[\]^_`aportable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferedbcdefghijk bcdefghijk cdebgfhijkbcdefghijk !!"#$%!!"#$%!"#&$%'( ) ) * + , - . / 0 1 ) ) * + , - 1 . / 0 2 2 3 4 5 6 7 8 9 : ; 2 2 3 4 5 6 7 8 9 : ; 2 3 4 5 6 < = 7 8 9 : ;>>?@ABCDEF>@AB?GCDEFHIJKLMNOPQRSTUVRSTUVRSTUVW X Y Z [ \ ] ^ _ ` a b X Y \ Z [ ] ^ _ ` a b c d e f g h i j k c d e f g h i j k c d e f g h i j klmnopqrstlnopqrstucomonad-transformers-2.0.2Control.Comonad.Trans.IdentityData.Functor.CompositionData.Functor.CoproductControl.Comonad.Trans.Class"Control.Comonad.Trans.Discont.Lazy$Control.Comonad.Trans.Discont.Strict"Control.Comonad.Trans.Discont.MemoControl.Comonad.Hoist.ClassControl.Comonad.Trans.Env.Lazy Control.Comonad.Trans.Env.Strict Control.Comonad.Trans.Store.Lazy"Control.Comonad.Trans.Store.Strict Control.Comonad.Trans.Store.MemoControl.Comonad.Trans.Traced!Control.Comonad.Trans.Traced.MemoControl.Comonad.Trans.DiscontControl.Comonad.Trans.EnvControl.Comonad.Trans.Storetransformers-0.2.2.0Control.Monad.Trans.Identity runIdentityT IdentityT Composition decomposecompose Coproduct getCoproductleftright coproduct ComonadTranslowerDiscontTDiscontdiscont runDiscont runDiscontTdiscontT ComonadHoistcohoistEnvTEnvenvrunEnvrunEnvTaskaskslocal lowerEnvTStoreTStorestorerunStore runStoreTposseekseekspeekpeeksstoreT lowerStoreTTracedT runTracedTTracedtraced runTracedtracelistenlistenscensortracedT$fCompositionCompose$fContravariantCoproduct$fComonadCoproduct$fExtendCoproduct$fTraversable1Coproduct$fTraversableCoproduct$fFoldable1Coproduct$fFoldableCoproduct$fFunctorCoproduct$fComonadTransIdentityT$fComonadTransDiscontT$fComonadDiscontT$fExtendDiscontT$fFunctorDiscontT$fTypeable1DiscontT$fComonadHoistIdentityT$fTraversableEnvT$fFoldableEnvT$fComonadHoistEnvT$fComonadTransEnvT $fApplyEnvT $fComonadEnvT $fExtendEnvT $fFunctorEnvT $fDataEnvT$fTypeableEnvT$fTypeable1EnvT$fComonadHoistStoreT$fComonadTransStoreT$fComonadStoreT$fExtendStoreT$fApplicativeStoreT $fApplyStoreT$fFunctorStoreT$fTypeableStoreT$fTypeable1StoreT$fTypeable1TracedT$fDistributiveTracedT$fComonadHoistTracedT$fComonadTransTracedT$fComonadTracedT$fExtendTracedT$fApplicativeTracedT$fApplyTracedT$fFunctorTracedT