monad-journal-0.8.1: Pure logger typeclass and monad transformer

Copyright(C) Dimitri Sabadie
LicenseBSD3
Maintainerdimitri.sabadie@gmail.com
Stabilitystable
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Trans.Journal

Contents

Description

Monad transformer version of MonadJournal. JournalT provides journaling over a monad.

This modules defines a few useful instances. Check the list below for further information.

Synopsis

JournalT monad transformer

data JournalT w m a Source #

Transformer version of MonadJournal.

Instances

MonadBase b m => MonadBase b (JournalT w m) Source # 

Methods

liftBase :: b α -> JournalT w m α #

(Monoid w, MonadBaseControl b m) => MonadBaseControl b (JournalT w m) Source # 

Associated Types

type StM (JournalT w m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (JournalT w m) b -> b a) -> JournalT w m a #

restoreM :: StM (JournalT w m) a -> JournalT w m a #

MonadError e m => MonadError e (JournalT w m) Source # 

Methods

throwError :: e -> JournalT w m a #

catchError :: JournalT w m a -> (e -> JournalT w m a) -> JournalT w m a #

MonadReader r m => MonadReader r (JournalT w m) Source # 

Methods

ask :: JournalT w m r #

local :: (r -> r) -> JournalT w m a -> JournalT w m a #

reader :: (r -> a) -> JournalT w m a #

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

Methods

get :: JournalT w m s #

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

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

MonadWriter w' m => MonadWriter w' (JournalT w m) Source # 

Methods

writer :: (a, w') -> JournalT w m a #

tell :: w' -> JournalT w m () #

listen :: JournalT w m a -> JournalT w m (a, w') #

pass :: JournalT w m (a, w' -> w') -> JournalT w m a #

(Monoid w, Monad m) => MonadJournal w (JournalT w m) Source # 

Methods

journal :: w -> JournalT w m () Source #

history :: JournalT w m w Source #

clear :: JournalT w m () Source #

MonadTrans (JournalT w) Source # 

Methods

lift :: Monad m => m a -> JournalT w m a #

Monoid w => MonadTransControl (JournalT w) Source # 

Associated Types

type StT (JournalT w :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run (JournalT w) -> m a) -> JournalT w m a #

restoreT :: Monad m => m (StT (JournalT w) a) -> JournalT w m a #

Monad m => Monad (JournalT w m) Source # 

Methods

(>>=) :: JournalT w m a -> (a -> JournalT w m b) -> JournalT w m b #

(>>) :: JournalT w m a -> JournalT w m b -> JournalT w m b #

return :: a -> JournalT w m a #

fail :: String -> JournalT w m a #

Functor m => Functor (JournalT w m) Source # 

Methods

fmap :: (a -> b) -> JournalT w m a -> JournalT w m b #

(<$) :: a -> JournalT w m b -> JournalT w m a #

Monad m => Applicative (JournalT w m) Source # 

Methods

pure :: a -> JournalT w m a #

(<*>) :: JournalT w m (a -> b) -> JournalT w m a -> JournalT w m b #

(*>) :: JournalT w m a -> JournalT w m b -> JournalT w m b #

(<*) :: JournalT w m a -> JournalT w m b -> JournalT w m a #

MonadIO m => MonadIO (JournalT w m) Source # 

Methods

liftIO :: IO a -> JournalT w m a #

MonadPlus m => Alternative (JournalT w m) Source # 

Methods

empty :: JournalT w m a #

(<|>) :: JournalT w m a -> JournalT w m a -> JournalT w m a #

some :: JournalT w m a -> JournalT w m [a] #

many :: JournalT w m a -> JournalT w m [a] #

MonadPlus m => MonadPlus (JournalT w m) Source # 

Methods

mzero :: JournalT w m a #

mplus :: JournalT w m a -> JournalT w m a -> JournalT w m a #

type StT (JournalT w) a Source # 
type StT (JournalT w) a = (a, w)
type StM (JournalT w m) a Source # 
type StM (JournalT w m) a = ComposeSt (JournalT w) m a

runJournalT :: (Monoid w, Monad m) => JournalT w m a -> m (a, w) Source #

Retrieve the value and the log history.

evalJournalT :: (Monoid w, Monad m) => JournalT w m a -> m a Source #

Only retrieve the value.

execJournalT :: (Monoid w, Monad m) => JournalT w m a -> m w Source #

Only retrieve the log history.

Re-exported