0t)u      !"#$%&' ( ) * + , - . / 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 WXYZ[\]^_`abcdefghijklmnopqrstportable 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> u   portable provisionalEdward Kmett <ekmett@gmail.com> portable provisionalEdward Kmett <ekmett@gmail.com> vportable provisionalEdward Kmett <ekmett@gmail.com> wx !"#$ !"#$! "$# !"#$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> '()yz{*+,-./ '()*+,-./ )*+'(,-./ '(()*+,-./portable provisionalEdward Kmett <ekmett@gmail.com> '()*+,-./ portable provisionalEdward Kmett <ekmett@gmail.com> 012|}~345678 012345678 234015678 0112345678 portable provisionalEdward Kmett <ekmett@gmail.com> 9:;<=>?@AB 9:;<=>?@AB ;<=9:>?@AB 9::;<=>?@ABportable provisionalEdward Kmett <ekmett@gmail.com> 9:;<=>?@AB portable provisionalEdward Kmett <ekmett@gmail.com> CDEFGHIJKL CDEFGHIJKL EFGCDHIJKL CDDEFGHIJKL portable provisionalEdward Kmett <ekmett@gmail.com> MNOPQRSTUV MNOPQRSTUV NOPMRQSTUV MNOPQRSTUVportable provisionalEdward Kmett <ekmett@gmail.com> WXYZ[\]^_` WXYZ[\]^_` Z[\WXY]^_` WXYXYZ[\]^_`portable provisionalEdward Kmett <ekmett@gmail.com> abcdefghi abcdefghi bcdaefghi abcdefghiportable provisionalEdward Kmett <ekmett@gmail.com>jEThe 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 klmnoIsomorphic to the definition: ' data Stream f a = a :< f (Stream f a) p cons onto an f-branching stream q"uncons from an f-branching stream runfold a stream from a seed. st jklmnopqrst opqrjklstmn jklklmnnopqrst  !"#$%&  !"#$&% !"'#$%&() * * + , - . / 0 1 * * + , - . / 0 1 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 :<<=>?@ABCD<>?@EABCDFFGHIJKLMNOPP P Q R S Q R S T T 2 TU<=UVWXYZ[\]^_`comonad-transformers-1.1.0Control.Comonad.Trans.IdentityData.Functor.Extend.Trans.ClassData.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 ExtendTranslower Coproduct getCoproductleftright coproduct ComonadTransDiscontTDiscontdiscont runDiscont runDiscontTlabelcallCVdiscontT ComonadHoistcohoistEnvTEnvenvrunEnvrunEnvTaskaskslocalStoreTStorestorerunStore runStoreTgetputmodify experimentstoreTTracedT runTracedTTracedtraced runTracedtracelistenlistenscensortracedTStreamT runStreamTNode:<Streamstream runStreamunfoldstailsunfoldsW discontTTyCon envTTyCon envTConstr envTDataType storeTTyCon tracedTTyConfstNsndNtypeFtypeW nodeTyCon streamTTyCon streamTConstrstreamTDataType nodeConstr nodeDataType