Lines Matching refs:WriterT

40     WriterT,
77 type Writer w = WriterT w Identity
81 writer :: (Monoid w, Monad m) => (a, w) -> WriterT w m a
82 writer (a, w') = WriterT $ \ w ->
118 newtype WriterT w m a = WriterT { unWriterT :: w -> m (a, w) } constructor
122 writerT :: (Functor m, Monoid w) => m (a, w) -> WriterT w m a
123 writerT f = WriterT $ \ w ->
129 runWriterT :: (Monoid w) => WriterT w m a -> m (a, w)
136 execWriterT :: (Monad m, Monoid w) => WriterT w m a -> m w
147 (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b
148 mapWriterT f m = WriterT $ \ w -> do
154 instance (Functor m) => Functor (WriterT w m) where
155 fmap f m = WriterT $ \ w -> (\ (a, w') -> (f a, w')) <$> unWriterT m w
158 instance (Functor m, Monad m) => Applicative (WriterT w m) where
159 pure a = WriterT $ \ w -> return (a, w)
162 WriterT mf <*> WriterT mx = WriterT $ \ w -> do function
168 instance (Functor m, MonadPlus m) => Alternative (WriterT w m) where
169 empty = WriterT $ const mzero
172 WriterT m <|> WriterT n = WriterT $ \ w -> m w `mplus` n w function
175 instance (Monad m) => Monad (WriterT w m) where
177 return a = WriterT $ \ w -> return (a, w)
181 m >>= k = WriterT $ \ w -> do
187 fail msg = WriterT $ \ _ -> fail msg
192 instance (Fail.MonadFail m) => Fail.MonadFail (WriterT w m) where
193 fail msg = WriterT $ \ _ -> Fail.fail msg
197 instance (Functor m, MonadPlus m) => MonadPlus (WriterT w m) where
203 instance (MonadFix m) => MonadFix (WriterT w m) where
204 mfix f = WriterT $ \ w -> mfix $ \ ~(a, _) -> unWriterT (f a) w
207 instance MonadTrans (WriterT w) where
208 lift m = WriterT $ \ w -> do
213 instance (MonadIO m) => MonadIO (WriterT w m) where
218 tell :: (Monoid w, Monad m) => w -> WriterT w m ()
226 listen :: (Monoid w, Monad m) => WriterT w m a -> WriterT w m (a, w)
237 (w -> b) -> WriterT w m a -> WriterT w m (a, b)
238 listens f m = WriterT $ \ w -> do
250 WriterT w m (a, w -> w') -> WriterT w' m a
251 pass m = WriterT $ \ w -> do
264 censor :: (Monoid w, Monad m) => (w -> w) -> WriterT w m a -> WriterT w m a
265 censor f m = WriterT $ \ w -> do
274 liftCallCC :: CallCC m (a, w) (b, w) -> CallCC (WriterT w m) a b
275 liftCallCC callCC f = WriterT $ \ w ->
276 callCC $ \ c -> unWriterT (f (\ a -> WriterT $ \ _ -> c (a, w))) w
280 liftCatch :: Catch e m (a, w) -> Catch e (WriterT w m) a
281 liftCatch catchE m h = WriterT $ \ w ->