{-# options_haddock prune #-}
-- |Description: Internal

module Polysemy.Log.Data.DataLog where

-- |Adapter for a logging backend.
--
-- Usually this is reinterpreted into an effect like those from /co-log/ or /di/, but it can be used purely for testing.
data DataLog a :: Effect where
  -- |Schedule an arbitrary value for logging.
  DataLog :: a -> DataLog a m ()
  -- |Stores the provided function in the interpreter and applies it to all log messages emitted within the higher-order
  -- thunk that's the second argument.
  Local :: (a -> a) -> m b -> DataLog a m b

makeSem ''DataLog