úÎ7œ0ír      !"#$%&'( ) * + , - . / 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 X Y Z [ \ ] ^_`abcdefghijklmnopq~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. portable provisionalEdward Kmett <ekmett@gmail.com>    portable provisionalEdward Kmett <ekmett@gmail.com>portable provisionalEdward Kmett <ekmett@gmail.com>     portable provisionalEdward Kmett <ekmett@gmail.com> rportable provisionalEdward Kmett <ekmett@gmail.com>portable provisionalEdward Kmett <ekmett@gmail.com> sportable provisionalEdward Kmett <ekmett@gmail.com> tu !"#$% !"#$% "!#%$ !"#$%portable provisionalEdward Kmett <ekmett@gmail.com>&';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> ()*vwx+,-./01 ()*+,-./01 *+,()-1./0 ())*+,-./01portable provisionalEdward Kmett <ekmett@gmail.com> ()*+,-./01 portable provisionalEdward Kmett <ekmett@gmail.com> 234yz{56789:; 23456789:; 45623789:; 233456789:; portable provisionalEdward Kmett <ekmett@gmail.com> <=>|?@ABRead the current position CSeek to an absolute location  seek s = peek s . duplicate DSeek to a relative location  seeks f = peeks f . duplicate E-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y F-Peek at a value at a given relative location <=>?@ABCDEF >?@<=ABCDEF <==>?@ABCDEFportable provisionalEdward Kmett <ekmett@gmail.com> <=>?@ABCDEF portable provisionalEdward Kmett <ekmett@gmail.com> GHI}JKLMRead the current position NSeek to an absolute location  seek s = peek s . duplicate OSeek to a relative location  seeks f = peeks f . duplicate P-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y Q-Peek at a value at a given relative location GHIJKLMNOPQ IJKGHLMNOPQ GHHIJKLMNOPQ portable provisionalEdward Kmett <ekmett@gmail.com>R~STUVWXYRead the current position ZSeek 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 RSTUVWXYZ[\] STURWVXYZ[\] RSTUVWXYZ[\]portable provisionalEdward Kmett <ekmett@gmail.com> ^_`abcdefg€ ^_`abcdefg abc^_`defg ^_`_`abcdefgportable provisionalEdward Kmett <ekmett@gmail.com> hijklmnopq‚ hijklmnopq ijkhmlnopq hijklmnopqƒ !!"#$%&'!!"#$%'&!"#($%&')* + + , - . / 0 1 2 3 + + , - . / 3 0 1 2 4 4 5 6 7 8 9 : ; < = 4 4 5 6 7 8 9 : ; < = 4 5 6 7 8 > ? 9 : ; < =@@ABCDEFGH@BCDAIEFGHJJ!J K L M K L M N N 4 NO@OPcomonad-transformers-1.8.0Control.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 runDiscontTlabelcallCVdiscontT ComonadHoistcohoistEnvTEnvenvrunEnvrunEnvTaskaskslocal lowerEnvTStoreTStorestorerunStore runStoreTposseekseekspeekpeeksstoreT lowerStoreTTracedT runTracedTTracedtraced runTracedtracelistenlistenscensortracedT discontTTyCon envTTyCon envTConstr envTDataType storeTTyCon tracedTTyCon