| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Agda.Utils.ListT
Description
ListT done right,
see https://www.haskell.org/haskellwiki/ListT_done_right_alternative
There is also the list-t package on hackage (Nikita Volkov)
but it again depends on other packages we do not use yet,
so we rather implement the few bits we need afresh.
Synopsis
- newtype ListT m a = ListT {}
- nilListT :: Monad m => ListT m a
- consListT :: Monad m => a -> ListT m a -> ListT m a
- sgListT :: Monad m => a -> ListT m a
- caseListT :: Monad m => ListT m a -> m b -> (a -> ListT m a -> m b) -> m b
- foldListT :: Monad m => (a -> m b -> m b) -> m b -> ListT m a -> m b
- concatListT :: Monad m => ListT m (ListT m a) -> ListT m a
- runMListT :: Monad m => m (ListT m a) -> ListT m a
- consMListT :: Monad m => m a -> ListT m a -> ListT m a
- sgMListT :: Monad m => m a -> ListT m a
- mapMListT :: Monad m => (a -> m b) -> ListT m a -> ListT m b
- mapMListT_alt :: Monad m => (a -> m b) -> ListT m a -> ListT m b
- liftListT :: (Monad m, Monad m') => (forall a. m a -> m' a) -> ListT m a -> ListT m' a
Documentation
Lazy monadic computation of a list of results.
Instances
List operations
caseListT :: Monad m => ListT m a -> m b -> (a -> ListT m a -> m b) -> m b #
Case distinction over lazy list.
foldListT :: Monad m => (a -> m b -> m b) -> m b -> ListT m a -> m b #
Folding a lazy list, effects left-to-right.
concatListT :: Monad m => ListT m (ListT m a) -> ListT m a #
The join operation of the ListT m monad.
Monadic list operations.
runMListT :: Monad m => m (ListT m a) -> ListT m a #
We can `run' a computation of a ListT as it is monadic itself.
consMListT :: Monad m => m a -> ListT m a -> ListT m a #
Monadic cons.
mapMListT :: Monad m => (a -> m b) -> ListT m a -> ListT m b #
Extending a monadic function to ListT.