free-listt-0.1.0.1: Lawful list and set monad transformers based on free monads
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Trans.List

Description

Free list monad transformer

Synopsis

Documentation

newtype ListT m a Source #

The free list monad transformer.

It is implemented as a rose tree (see https://en.wikipedia.org/wiki/Rose_tree) of computations in m.

Constructors

ListT 

Fields

Instances

Instances details
MonadTrans ListT Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

lift :: Monad m => m a -> ListT m a #

(MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

MonadError e m => MonadError e (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

throwError :: e -> ListT m a #

catchError :: ListT m a -> (e -> ListT m a) -> ListT m a #

MonadReader r m => MonadReader r (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

ask :: ListT m r #

local :: (r -> r) -> ListT m a -> ListT m a #

reader :: (r -> a) -> ListT m a #

MonadState s m => MonadState s (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

get :: ListT m s #

put :: s -> ListT m () #

state :: (s -> (a, s)) -> ListT m a #

MonadWriter w m => MonadWriter w (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

writer :: (a, w) -> ListT m a #

tell :: w -> ListT m () #

listen :: ListT m a -> ListT m (a, w) #

pass :: ListT m (a, w -> w) -> ListT m a #

MonadFail m => MonadFail (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

fail :: String -> ListT m a #

MonadIO m => MonadIO (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

liftIO :: IO a -> ListT m a #

Eq1 m => Eq1 (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

liftEq :: (a -> b -> Bool) -> ListT m a -> ListT m b -> Bool #

Ord1 m => Ord1 (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

liftCompare :: (a -> b -> Ordering) -> ListT m a -> ListT m b -> Ordering #

Read1 m => Read1 (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (ListT m a) #

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [ListT m a] #

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (ListT m a) #

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [ListT m a] #

Show1 m => Show1 (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> ListT m a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [ListT m a] -> ShowS #

MonadPlus m => Alternative (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

empty :: ListT m a #

(<|>) :: ListT m a -> ListT m a -> ListT m a #

some :: ListT m a -> ListT m [a] #

many :: ListT m a -> ListT m [a] #

Monad m => Applicative (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

pure :: a -> ListT m a #

(<*>) :: ListT m (a -> b) -> ListT m a -> ListT m b #

liftA2 :: (a -> b -> c) -> ListT m a -> ListT m b -> ListT m c #

(*>) :: ListT m a -> ListT m b -> ListT m b #

(<*) :: ListT m a -> ListT m b -> ListT m a #

Functor m => Functor (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

fmap :: (a -> b) -> ListT m a -> ListT m b #

(<$) :: a -> ListT m b -> ListT m a #

Monad m => Monad (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

(>>=) :: ListT m a -> (a -> ListT m b) -> ListT m b #

(>>) :: ListT m a -> ListT m b -> ListT m b #

return :: a -> ListT m a #

MonadPlus m => MonadPlus (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

mzero :: ListT m a #

mplus :: ListT m a -> ListT m a -> ListT m a #

MonadCatch m => MonadCatch (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

catch :: (HasCallStack, Exception e) => ListT m a -> (e -> ListT m a) -> ListT m a #

MonadThrow m => MonadThrow (ListT m) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

throwM :: (HasCallStack, Exception e) => e -> ListT m a #

(Read1 m, Read a) => Read (ListT m a) Source # 
Instance details

Defined in Control.Monad.Trans.List

(Show1 m, Show a) => Show (ListT m a) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

showsPrec :: Int -> ListT m a -> ShowS #

show :: ListT m a -> String #

showList :: [ListT m a] -> ShowS #

(Eq1 m, Eq a) => Eq (ListT m a) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

(==) :: ListT m a -> ListT m a -> Bool #

(/=) :: ListT m a -> ListT m a -> Bool #

(Ord1 m, Ord a) => Ord (ListT m a) Source # 
Instance details

Defined in Control.Monad.Trans.List

Methods

compare :: ListT m a -> ListT m a -> Ordering #

(<) :: ListT m a -> ListT m a -> Bool #

(<=) :: ListT m a -> ListT m a -> Bool #

(>) :: ListT m a -> ListT m a -> Bool #

(>=) :: ListT m a -> ListT m a -> Bool #

max :: ListT m a -> ListT m a -> ListT m a #

min :: ListT m a -> ListT m a -> ListT m a #

flatten :: Monad m => ListT m a -> ListT m a Source #

Flatten all layers of computations to a single one.

runListT :: Monad m => ListT m a -> m [a] Source #

Like flatten, but remove the ListT wrapper.

listT :: Monad m => m [a] -> ListT m a Source #

Construct a ListT from an effectful list (a single layer).

singleton :: Functor m => m a -> ListT m a Source #

Construct a ListT from a single effectful value.