Safe Haskell | None |
---|---|
Language | Haskell2010 |
The LogWriter
type encapsulates an effectful function to write LogMessage
s.
Used in conjunction with the HandleLogWriter
class, it
can be used to write messages from within an effectful
computation.
Synopsis
- newtype LogWriter writerM = MkLogWriter {
- runLogWriter :: LogMessage -> LogWriterM writerM ()
- data LogWriterReader h v
- localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a
- askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h)
- runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h ': e) a -> Eff e a
- class HandleLogWriter (writer :: Type -> Type) where
- data LogWriterM writer a
- handleLogWriterEffect :: Member writer e => LogWriterM writer () -> Eff e ()
- liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writer) e, Member writer e) => LogMessage -> Eff e ()
- noOpLogWriter :: Applicative (LogWriterM m) => LogWriter m
- filteringLogWriter :: Monad (LogWriterM e) => LogPredicate -> LogWriter e -> LogWriter e
- mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e
- mappingLogWriterM :: Monad (LogWriterM e) => (LogMessage -> LogWriterM e LogMessage) -> LogWriter e -> LogWriter e
LogWriter
Definition
newtype LogWriter writerM Source #
A function that takes a log message and returns an effect that logs the message.
MkLogWriter | |
|
Instances
Applicative (LogWriterM w) => Default (LogWriter w) Source # | |
Defined in Control.Eff.Log.Writer | |
Handle (LogWriterReader h) e a (LogWriter h -> k) Source # | |
Defined in Control.Eff.Log.Writer handle :: (Eff e a -> LogWriter h -> k) -> Arrs e v a -> LogWriterReader h v -> LogWriter h -> k # handle_relay :: (e ~ (LogWriterReader h ': r'), Relay (LogWriter h -> k) r') => (a -> LogWriter h -> k) -> (Eff e a -> LogWriter h -> k) -> Eff e a -> LogWriter h -> k # respond_relay :: (a -> LogWriter h -> k) -> (Eff e a -> LogWriter h -> k) -> Eff e a -> LogWriter h -> k # |
LogWriter Reader Effect
data LogWriterReader h v Source #
A Reader specialized for LogWriter
s
The existing Reader
couldn't be used together with SetMember
, so this
lazy reader was written, specialized to reading LogWriter
.
Instances
localLogWriterReader :: forall h e a. SetMember LogWriterReader (LogWriterReader h) e => (LogWriter h -> LogWriter h) -> Eff e a -> Eff e a Source #
Modify the current LogWriter
.
askLogWriter :: SetMember LogWriterReader (LogWriterReader h) e => Eff e (LogWriter h) Source #
Get the current LogWriter
.
runLogWriterReader :: LogWriter h -> Eff (LogWriterReader h ': e) a -> Eff e a Source #
Provide the LogWriter
Exposed for custom extensions, if in doubt use withLogging
.
LogWriter Handler Class
class HandleLogWriter (writer :: Type -> Type) where Source #
The instances of this class are the monads that define (side-) effect(s) of writting logs.
data LogWriterM writer a Source #
The Eff
ects required by the handleLogWriterEffect
method.
Since: 0.29.1
handleLogWriterEffect :: Member writer e => LogWriterM writer () -> Eff e () Source #
liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writer) e, Member writer e) => LogMessage -> Eff e () Source #
Write a message using the LogWriter
found in the environment.
The semantics of this function are a combination of runLogWriter
and handleLogWriterEffect
,
with the LogWriter
read from a LogWriterReader
.
Instances
noOpLogWriter :: Applicative (LogWriterM m) => LogWriter m Source #
Writer Combinator
Pure Writer Combinator
filteringLogWriter :: Monad (LogWriterM e) => LogPredicate -> LogWriter e -> LogWriter e Source #
A LogWriter
that applies a predicate to the LogMessage
and delegates to
to the given writer of the predicate is satisfied.
mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e Source #
A LogWriter
that applies a function to the LogMessage
and delegates the result to
to the given writer.
Impure Writer Combinator
mappingLogWriterM :: Monad (LogWriterM e) => (LogMessage -> LogWriterM e LogMessage) -> LogWriter e -> LogWriter e Source #
Like mappingLogWriter
allow the function that changes the LogMessage
to have effects.