-- |Description: /polysemy-log/ adapters for /co-log/
module Polysemy.Log.Colog (
  -- * Introduction
  -- $intro

  -- * Interpreters
  interpretLogStdout,
  interpretLogStdoutConc,
  interpretLogStdoutAsNative,
  interpretLogColog,
  interpretLogColog',
  interpretDataLogColog,
  interpretCologConcNative,
  interpretCologConcNativeWith,
  interpretCologAtomic,
  interpretCologAtomic'
) where

import Polysemy.Log.Colog.Colog (
  interpretLogStdout,
  interpretLogStdoutConc,
  interpretLogColog,
  interpretLogStdoutAsNative,
  interpretLogColog',
  interpretDataLogColog,
  )
import Polysemy.Log.Colog.Conc (interpretCologConcNative, interpretCologConcNativeWith)
import Polysemy.Log.Colog.Atomic (interpretCologAtomic, interpretCologAtomic')

-- $intro
-- This package is a [co-log](https://hackage.haskell.org/package/co-log-polysemy) adapter for
-- [polysemy-log](https://hackage.haskell.org/package/polysemy-log), providing interpreters that convert
-- 'Polysemy.Log.Log' and 'Polysemy.Log.DataLog' into 'Colog.Polysemy.Log' actions.
--
-- @
-- import Polysemy.Log
-- import Polysemy.Log.Colog
--
-- prog :: Member Log r => Sem r ()
-- prog = do
--   Log.debug "debugging"
--   Log.error "failing"
--
-- interpretLogColog prog :: Sem [Colog.Log (LogEntry LogMessage), Embed IO] ()
-- interpretLogStdout prog :: Sem '[Embed IO] ()
-- @