Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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
MonadTrans ListT Source # | |
Defined in Agda.Utils.ListT | |
(Applicative m, MonadState s m) => MonadState s (ListT m) Source # | |
(Applicative m, MonadReader r m) => MonadReader r (ListT m) Source # | |
(Functor m, Applicative m, Monad m) => Monad (ListT m) Source # | |
Functor m => Functor (ListT m) Source # | |
(Functor m, Applicative m, Monad m) => Applicative (ListT m) Source # | |
(Applicative m, MonadIO m) => MonadIO (ListT m) Source # | |
Defined in Agda.Utils.ListT | |
(Functor m, Applicative m, Monad m) => Alternative (ListT m) Source # | |
(Functor m, Applicative m, Monad m) => MonadPlus (ListT m) Source # | |
MonadTCM tcm => MonadTCM (ListT tcm) Source # | |
HasOptions m => HasOptions (ListT m) Source # | |
Defined in Agda.TypeChecking.Monad.Base | |
MonadDebug m => MonadDebug (ListT m) Source # | |
Defined in Agda.TypeChecking.Monad.Debug | |
Monad m => Semigroup (ListT m a) Source # | |
Monad m => Monoid (ListT m a) Source # | |
List operations
caseListT :: Monad m => ListT m a -> m b -> (a -> ListT m a -> m b) -> m b Source #
Case distinction over lazy list.
foldListT :: Monad m => (a -> m b -> m b) -> m b -> ListT m a -> m b Source #
Folding a lazy list, effects left-to-right.
concatListT :: Monad m => ListT m (ListT m a) -> ListT m a Source #
The join operation of the ListT m
monad.
Monadic list operations.
runMListT :: Monad m => m (ListT m a) -> ListT m a Source #
We can `run'
a computation of a ListT
as it is monadic itself.
mapMListT :: Monad m => (a -> m b) -> ListT m a -> ListT m b Source #
Extending a monadic function to ListT
.