| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Polysemy.Log.Di
Contents
Description
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.