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 -> 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 (writerEff :: Type -> Type) where
- type LogWriterEffects writerEff :: [Type -> Type]
- handleLogWriterEffect :: LogWriterEffects writerEff <:: e => writerEff () -> Eff e ()
- liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writerEff) e, LogWriterEffects writerEff <:: e) => LogMessage -> Eff e ()
- noOpLogWriter :: Applicative m => LogWriter m
- newtype PureLogWriter a = MkPureLogWriter {
- runPureLogWriter :: Identity a
- filteringLogWriter :: Monad e => LogPredicate -> LogWriter e -> LogWriter e
- mappingLogWriter :: (LogMessage -> LogMessage) -> LogWriter e -> LogWriter e
- mappingLogWriterM :: Monad e => (LogMessage -> 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 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 (writerEff :: Type -> Type) where Source #
The instances of this class are the monads that define (side-) effect(s) of writting logs.
type LogWriterEffects writerEff :: [Type -> Type] Source #
A list of effects that are required for writing the log messages. For example 'Lift IO' or '[]' for pure log writers.
handleLogWriterEffect :: LogWriterEffects writerEff <:: e => writerEff () -> Eff e () Source #
liftWriteLogMessage :: (SetMember LogWriterReader (LogWriterReader writerEff) e, LogWriterEffects writerEff <:: 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 m => LogWriter m Source #
newtype PureLogWriter a Source #
A phantom type for the HandleLogWriter
class for pure LogWriter
s
Instances
Writer Combinator
Pure Writer Combinator
filteringLogWriter :: Monad 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 e => (LogMessage -> e LogMessage) -> LogWriter e -> LogWriter e Source #
Like mappingLogWriter
allow the function that changes the LogMessage
to have effects.