Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- interpretLogDi :: forall path r. Members [Di Severity path (LogEntry LogMessage), GhcTime] r => InterpreterFor Log r
- interpretLogDi' :: forall path r. Members [Di Severity path (LogEntry LogMessage), Embed IO] r => InterpretersFor [Log, GhcTime] r
- interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Race, Embed IO] r => Int -> InterpreterFor Log r
- interpretDataLogDi :: forall level path msg r. Member (Di level path msg) r => (msg -> level) -> InterpreterFor (DataLog msg) r
- interpretDiAtomic :: forall level path msg r. Member (Embed IO) r => InterpretersFor [Di level path msg, AtomicState [msg]] r
- interpretDiAtomic' :: forall level path msg r. Member (AtomicState [msg]) r => InterpreterFor (Di level path msg) r
Introduction
This package is a di adapter for
polysemy-log, providing interpreters that convert
Log
and DataLog
into Di
actions.
import Polysemy.Log import Polysemy.Log.Di prog :: Member Log r => Sem r () prog = do Log.debug "debugging" Log.error "failing" interpretLogDi prog :: Sem [Di.Di Severity path (LogEntry LogMessage), Embed IO] () interpretLogStdout prog :: Sem '[Embed IO] ()
Interpreters
interpretLogDi :: forall path r. Members [Di Severity path (LogEntry LogMessage), GhcTime] r => InterpreterFor Log r Source #
Reinterpret Log
as Di
, using the polysemy-log default message.
Since this adds a timestamp, it has a dependency on GhcTime
.
Use interpretLogDi'
for a variant that interprets GhcTime
in-place.
interpretLogDi' :: forall path r. Members [Di Severity path (LogEntry LogMessage), Embed IO] r => InterpretersFor [Log, GhcTime] r Source #
interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Race, Embed IO] r => Int -> InterpreterFor Log r Source #
interpretDataLogDi :: forall level path msg r. Member (Di level path msg) r => (msg -> level) -> InterpreterFor (DataLog msg) r Source #
interpretDiAtomic :: forall level path msg r. Member (Embed IO) r => InterpretersFor [Di level path msg, AtomicState [msg]] r Source #
Interpret Di
by prepending each message to a list in an AtomicState
, then interpret the
AtomicState
in a TVar
.
interpretDiAtomic' :: forall level path msg r. Member (AtomicState [msg]) r => InterpreterFor (Di level path msg) r Source #
Interpret Di
by prepending each message to a list in an AtomicState
.