Safe Haskell | None |
---|
- data ListT m a
- class MonadTrans t => ListTrans t where
- class MonadPlus m => ListMonad m where
- cons :: a -> m a -> m a
- head :: (Monad m, ListTrans t) => t m a -> m (Maybe a)
- tail :: (Monad m, ListTrans t) => t m a -> m (Maybe (t m a))
- null :: (Monad m, ListTrans t) => t m a -> m Bool
- fold :: (Monad m, ListTrans t) => (r -> a -> m r) -> r -> t m a -> m r
- toList :: (Monad m, ListTrans t) => t m a -> m [a]
- traverse_ :: (Monad m, ListTrans t) => (a -> m ()) -> t m a -> m ()
- fromFoldable :: (ListMonad m, Foldable f) => f a -> m a
- unfold :: ListMonad m => (b -> Maybe (a, b)) -> b -> m a
- repeat :: ListMonad m => a -> m a
- traverse :: (Monad m, ListMonad (t m), ListTrans t) => (a -> m b) -> t m a -> t m b
- take :: (Monad m, ListMonad (t m), ListTrans t) => Int -> t m a -> t m a
- drop :: (Monad m, MonadPlus (t m), ListTrans t) => Int -> t m a -> t m a
Documentation
A proper implementation of a list monad-transformer. Useful for streaming of monadic data structures.
Since it has instances of MonadPlus
and Alternative
,
you can use general utilities packages like
"monadplus"
with it.
MFunctor ListT | |
MonadTrans ListT | |
ListTrans ListT | |
MonadBase b m => MonadBase b (ListT m) | |
MonadBaseControl b m => MonadBaseControl b (ListT m) | |
Monad m => Monad (ListT m) | |
Functor m => Functor (ListT m) | |
Monad m => MonadPlus (ListT m) | |
(Monad m, Functor m) => Applicative (ListT m) | |
(Monad m, Functor m) => Alternative (ListT m) | |
MonadIO m => MonadIO (ListT m) | |
Monad m => ListMonad (ListT m) | |
Monad m => Monoid (ListT m a) |
Classes
class MonadTrans t => ListTrans t whereSource
A monad transformer capable of executing like a list.
Execution utilities
head :: (Monad m, ListTrans t) => t m a -> m (Maybe a)Source
Execute, getting the head. Returns nothing if it's empty.
tail :: (Monad m, ListTrans t) => t m a -> m (Maybe (t m a))Source
Execute, getting the tail. Returns nothing if it's empty.
fold :: (Monad m, ListTrans t) => (r -> a -> m r) -> r -> t m a -> m rSource
Execute, applying a left fold.
traverse_ :: (Monad m, ListTrans t) => (a -> m ()) -> t m a -> m ()Source
Execute, traversing the stream with a side effect in the inner monad.
Construction utilities
fromFoldable :: (ListMonad m, Foldable f) => f a -> m aSource
Construct from any foldable.
unfold :: ListMonad m => (b -> Maybe (a, b)) -> b -> m aSource
Construct by unfolding a pure data structure.
Transformation utilities
These utilities only accumulate the transformations without actually traversing the stream. They only get applied with a single traversal, which happens at the execution.
traverse :: (Monad m, ListMonad (t m), ListTrans t) => (a -> m b) -> t m a -> t m bSource
A transformation, which traverses the stream with an action in the inner monad.