@m8{      !"#$%&'( ) * + , - . / 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 [ \]^_`abcdefghijklmnopqrstuvwxyz~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> {portable provisionalEdward Kmett <ekmett@gmail.com>portable provisionalEdward Kmett <ekmett@gmail.com> |portable provisionalEdward Kmett <ekmett@gmail.com> }~ !"#$% !"#$% "!#%$ !"#$%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> ()*+,-./01 ()*+,-./01 *+,()-1./0 ())*+,-./01portable provisionalEdward Kmett <ekmett@gmail.com> ()*+,-./01 portable provisionalEdward Kmett <ekmett@gmail.com> 23456789: 23456789: 45623789: 233456789: portable provisionalEdward Kmett <ekmett@gmail.com> ;<=>?@ARead the current position BSeek to an absolute location  seek s = peek s . duplicate CSeek to a relative location  seeks f = peeks f . duplicate D-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y E-Peek at a value at a given relative location ;<=>?@ABCDE =>?;<@ABCDE ;<<=>?@ABCDEportable provisionalEdward Kmett <ekmett@gmail.com> ;<=>?@ABCDE portable provisionalEdward Kmett <ekmett@gmail.com> FGHIJKLRead the current position MSeek to an absolute location  seek s = peek s . duplicate NSeek to a relative location  seeks f = peeks f . duplicate O-Peek at a value at a given absolute location # peek x . extend (peek y) = peek y P-Peek at a value at a given relative location FGHIJKLMNOP HIJFGKLMNOP FGGHIJKLMNOP portable provisionalEdward Kmett <ekmett@gmail.com> QRSTUVWRead the current position XSeek to an absolute location  seek s = peek s . duplicate YSeek to a relative location  seeks f = peeks f . duplicate Z-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 QRSTUVWXYZ[ RSTQVUWXYZ[ QRSTUVWXYZ[portable provisionalEdward Kmett <ekmett@gmail.com> \]^_`abcde \]^_`abcde _`a\]^bcde \]^]^_`abcdeportable provisionalEdward Kmett <ekmett@gmail.com> fghijklmno fghijklmno ghifkjlmno fghijklmnoportable provisionalEdward Kmett <ekmett@gmail.com>pEThe f-branching stream comonad transformer is a comonadic version of  the "ListT done Right"> monad transformer. You can extract the underlying comonadic  value by using   or runStream qrstuIsomorphic to the definition: ' data Stream f a = a :< f (Stream f a) v cons onto an f-branching stream w"uncons from an f-branching stream xunfold a stream from a seed. yz pqrstuvwxyz uvwxpqryzst pqrqrsttuvwxyz !""#$%&'(""#$%&('"#$)%&'(*+ , , - . / 0 1 2 3 4 , , - . / 0 1 2 3 5 5 6 7 8 9 : ; < = > 5 5 6 7 8 9 : ; < = > 5 6 7 8 9 ? : ; < = >@@ABCDEFGH@BCDAIEFGHJJKLMNOPQRSTT"T U V W U V W X X 5 XY@YZ[\]^_`abcdcomonad-transformers-1.5.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.StreamControl.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 runStoreTposseekseekspeekpeeksstoreTTracedT runTracedTTracedtraced runTracedtracelistenlistenscensortracedTStreamT runStreamTNode:<Streamstream runStreamunfoldstailsunfoldsW discontTTyCon envTTyCon envTConstr envTDataType storeTTyCon tracedTTyConfstNsndNtypeFtypeW nodeTyCon streamTTyCon streamTConstrstreamTDataType nodeConstr nodeDataType