module Polysemy.Log.Pure where
import Polysemy.Output (Output, output)
import Polysemy.Log.Data.Log (Log(Log))
import Polysemy.Log.Data.LogMessage (LogMessage)
interpretLogOutput ::
Member (Output LogMessage) r =>
InterpreterFor Log r
interpretLogOutput :: InterpreterFor Log r
interpretLogOutput =
(forall x (rInitial :: EffectRow). Log (Sem rInitial) x -> Sem r x)
-> Sem (Log : r) a -> Sem r a
forall (e :: Effect) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall x (rInitial :: EffectRow). e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret \case
Log msg -> LogMessage -> Sem r ()
forall o (r :: EffectRow).
MemberWithError (Output o) r =>
o -> Sem r ()
output LogMessage
msg
interpretLogNull :: InterpreterFor Log r
interpretLogNull :: Sem (Log : r) a -> Sem r a
interpretLogNull =
(forall x (rInitial :: EffectRow). Log (Sem rInitial) x -> Sem r x)
-> Sem (Log : r) a -> Sem r a
forall (e :: Effect) (r :: EffectRow) a.
FirstOrder e "interpret" =>
(forall x (rInitial :: EffectRow). e (Sem rInitial) x -> Sem r x)
-> Sem (e : r) a -> Sem r a
interpret \case
Log _ -> () -> Sem r ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()