polysemy-log-0.2.2.1: lib/Polysemy/Log/Data/LogMetadata.hs
-- |Description: Internal
{-# options_haddock prune #-}
module Polysemy.Log.Data.LogMetadata where
import Polysemy.Internal (send)
-- |Internal effect used as an intermediate stage between 'Polysemy.Log.Log' and 'Polysemy.Log.DataLog', for the purpose
-- of isolating the metadata annotation task.
--
-- The type of metadata is arbitrary and chosen in interpreters, but this exposes a 'HasCallStack' dependency since it's
-- the primary purpose.
data LogMetadata msg :: Effect where
-- |Schedule a message to be annotated and logged.
Annotated :: HasCallStack => msg -> LogMetadata msg m ()
annotated ::
HasCallStack =>
Member (LogMetadata msg) r =>
msg ->
Sem r ()
annotated msg =
send (Annotated msg)