Portability | portable |
---|---|
Stability | provisional |
Maintainer | Edward Kmett <ekmett@gmail.com> |
The f-branching stream comonad, aka the cofree comonad for a Functor f.
Provided here as a comonad-transformer version of the 'ListT done right' monad transformer.
- type Stream f = StreamT f Identity
- stream :: a -> f (Stream f a) -> Stream f a
- runStream :: Stream f a -> (a, f (Stream f a))
- data StreamT f w a = StreamT {
- runStreamT :: w (a, f (StreamT f w a))
- tails :: Comonad w => StreamT f w a -> f (StreamT f w a)
- unfolds :: Functor f => (a -> (b, f a)) -> a -> Stream f b
- unfoldsW :: (Comonad w, Functor f) => (w a -> (b, f a)) -> w a -> StreamT f w b
The Stream comonad
The Stream comonad transformer
StreamT | |
|
Functor f => ComonadTrans (StreamT f) | |
Functor f => ComonadHoist (StreamT f) | |
(Functor w, Functor f) => Functor (StreamT f w) | |
(Foldable w, Foldable f) => Foldable (StreamT f w) | |
(Traversable w, Traversable f) => Traversable (StreamT f w) | |
(Comonad w, Functor f) => Comonad (StreamT f w) |