polysemy-log-0.5.0.0: test/Polysemy/Log/Test/ExampleTest.hs
{-# options_ghc -fplugin=Polysemy.Plugin #-}
module Polysemy.Log.Test.ExampleTest where
import Polysemy.Conc (runConc)
import qualified Polysemy.Log as Log
import Polysemy.Log (DataLog, Log, interpretDataLogStdout, interpretLogStdoutConc)
import qualified Polysemy.Log.Data.DataLog as DataLog
progSimple ::
Member Log r =>
Sem r ()
progSimple = do
Log.debug "debug"
Log.warn "warn"
data Message =
Message {
severity :: Text,
message :: Text
}
deriving (Eq, Show)
progData ::
Member (DataLog Message) r =>
Sem r ()
progData = do
DataLog.dataLog (Message "warn" "warning!")
DataLog.local (\ msg@Message{message} -> msg {message = "context: " <> message}) do
DataLog.dataLog (Message "error" "segfault!")
main :: IO ()
main =
runConc do
interpretLogStdoutConc progSimple
interpretDataLogStdout progData