strict-writer-0.3.0.0: A stricter writer, which uses StateT in order to avoid space leaks.

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Writer.Stricter

Synopsis

Documentation

data WriterT s m a Source #

A monad transformer similar to WriterT, except that it does not leak space.

Instances

MonadError e m => MonadError e (WriterT s m) Source # 

Methods

throwError :: e -> WriterT s m a #

catchError :: WriterT s m a -> (e -> WriterT s m a) -> WriterT s m a #

MonadReader r m => MonadReader r (WriterT s m) Source # 

Methods

ask :: WriterT s m r #

local :: (r -> r) -> WriterT s m a -> WriterT s m a #

reader :: (r -> a) -> WriterT s m a #

MonadState s m => MonadState s (WriterT w m) Source # 

Methods

get :: WriterT w m s #

put :: s -> WriterT w m () #

state :: (s -> (a, s)) -> WriterT w m a #

(Monoid s, Monad m) => MonadWriter s (WriterT s m) Source # 

Methods

writer :: (a, s) -> WriterT s m a #

tell :: s -> WriterT s m () #

listen :: WriterT s m a -> WriterT s m (a, s) #

pass :: WriterT s m (a, s -> s) -> WriterT s m a #

MonadTrans (WriterT s) Source # 

Methods

lift :: Monad m => m a -> WriterT s m a #

Monad m => Monad (WriterT s m) Source # 

Methods

(>>=) :: WriterT s m a -> (a -> WriterT s m b) -> WriterT s m b #

(>>) :: WriterT s m a -> WriterT s m b -> WriterT s m b #

return :: a -> WriterT s m a #

fail :: String -> WriterT s m a #

Functor m => Functor (WriterT s m) Source # 

Methods

fmap :: (a -> b) -> WriterT s m a -> WriterT s m b #

(<$) :: a -> WriterT s m b -> WriterT s m a #

MonadFix m => MonadFix (WriterT s m) Source # 

Methods

mfix :: (a -> WriterT s m a) -> WriterT s m a #

MonadFail m => MonadFail (WriterT s m) Source # 

Methods

fail :: String -> WriterT s m a #

Monad m => Applicative (WriterT s m) Source # 

Methods

pure :: a -> WriterT s m a #

(<*>) :: WriterT s m (a -> b) -> WriterT s m a -> WriterT s m b #

(*>) :: WriterT s m a -> WriterT s m b -> WriterT s m b #

(<*) :: WriterT s m a -> WriterT s m b -> WriterT s m a #

(Foldable m, Monoid w) => Foldable (WriterT w m) Source # 

Methods

fold :: Monoid m => WriterT w m m -> m #

foldMap :: Monoid m => (a -> m) -> WriterT w m a -> m #

foldr :: (a -> b -> b) -> b -> WriterT w m a -> b #

foldr' :: (a -> b -> b) -> b -> WriterT w m a -> b #

foldl :: (b -> a -> b) -> b -> WriterT w m a -> b #

foldl' :: (b -> a -> b) -> b -> WriterT w m a -> b #

foldr1 :: (a -> a -> a) -> WriterT w m a -> a #

foldl1 :: (a -> a -> a) -> WriterT w m a -> a #

toList :: WriterT w m a -> [a] #

null :: WriterT w m a -> Bool #

length :: WriterT w m a -> Int #

elem :: Eq a => a -> WriterT w m a -> Bool #

maximum :: Ord a => WriterT w m a -> a #

minimum :: Ord a => WriterT w m a -> a #

sum :: Num a => WriterT w m a -> a #

product :: Num a => WriterT w m a -> a #

(Traversable m, Monoid w) => Traversable (WriterT w m) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> WriterT w m a -> f (WriterT w m b) #

sequenceA :: Applicative f => WriterT w m (f a) -> f (WriterT w m a) #

mapM :: Monad m => (a -> m b) -> WriterT w m a -> m (WriterT w m b) #

sequence :: Monad m => WriterT w m (m a) -> m (WriterT w m a) #

(Eq1 m, Eq w, Monoid w) => Eq1 (WriterT w m) Source # 

Methods

liftEq :: (a -> b -> Bool) -> WriterT w m a -> WriterT w m b -> Bool #

(Ord1 m, Ord w, Monoid w) => Ord1 (WriterT w m) Source # 

Methods

liftCompare :: (a -> b -> Ordering) -> WriterT w m a -> WriterT w m b -> Ordering #

(Read w, Read1 m, Monoid w, Functor m) => Read1 (WriterT w m) Source # 

Methods

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

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

(Show w, Show1 m, Monoid w) => Show1 (WriterT w m) Source # 

Methods

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

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

MonadIO m => MonadIO (WriterT s m) Source # 

Methods

liftIO :: IO a -> WriterT s m a #

MonadPlus m => Alternative (WriterT s m) Source # 

Methods

empty :: WriterT s m a #

(<|>) :: WriterT s m a -> WriterT s m a -> WriterT s m a #

some :: WriterT s m a -> WriterT s m [a] #

many :: WriterT s m a -> WriterT s m [a] #

MonadPlus m => MonadPlus (WriterT s m) Source # 

Methods

mzero :: WriterT s m a #

mplus :: WriterT s m a -> WriterT s m a -> WriterT s m a #

MonadCont m => MonadCont (WriterT s m) Source # 

Methods

callCC :: ((a -> WriterT s m b) -> WriterT s m a) -> WriterT s m a #

(Eq w, Eq1 m, Eq a, Monoid w) => Eq (WriterT w m a) Source # 

Methods

(==) :: WriterT w m a -> WriterT w m a -> Bool #

(/=) :: WriterT w m a -> WriterT w m a -> Bool #

(Ord w, Ord1 m, Ord a, Monoid w) => Ord (WriterT w m a) Source # 

Methods

compare :: WriterT w m a -> WriterT w m a -> Ordering #

(<) :: WriterT w m a -> WriterT w m a -> Bool #

(<=) :: WriterT w m a -> WriterT w m a -> Bool #

(>) :: WriterT w m a -> WriterT w m a -> Bool #

(>=) :: WriterT w m a -> WriterT w m a -> Bool #

max :: WriterT w m a -> WriterT w m a -> WriterT w m a #

min :: WriterT w m a -> WriterT w m a -> WriterT w m a #

(Read w, Read1 m, Read a, Monoid w, Functor m) => Read (WriterT w m a) Source # 

Methods

readsPrec :: Int -> ReadS (WriterT w m a) #

readList :: ReadS [WriterT w m a] #

readPrec :: ReadPrec (WriterT w m a) #

readListPrec :: ReadPrec [WriterT w m a] #

(Show w, Show1 m, Show a, Monoid w) => Show (WriterT w m a) Source # 

Methods

showsPrec :: Int -> WriterT w m a -> ShowS #

show :: WriterT w m a -> String #

showList :: [WriterT w m a] -> ShowS #

runWriterT :: Monoid s => WriterT s m a -> m (a, s) Source #

pattern WriterT :: forall m s a. (Functor m, Monoid s) => m (a, s) -> WriterT s m a Source #

runWriter :: Monoid s => Writer s a -> (a, s) Source #

pattern Writer :: forall s a. Monoid s => (a, s) -> Writer s a Source #

execWriterT :: (Monad m, Monoid s) => WriterT s m a -> m s Source #

evalWriterT :: (Monad m, Monoid s) => WriterT s m a -> m a Source #

execWriter :: Monoid s => Writer s a -> s Source #

evalWriter :: Monoid s => Writer s a -> a Source #