packages feed

mit-3qvpPyAi6mH-12: src/Mit/Logger.hs

module Mit.Logger
  ( Logger,
    makeLogger,
    log,
  )
where

import Mit.Prelude

-- | A logger.
newtype Logger a
  = Logger (a -> IO ())

instance Contravariant Logger where
  contramap :: (a -> b) -> Logger b -> Logger a
  contramap f (Logger g) =
    Logger (g . f)

-- | Make a logger.
makeLogger :: (a -> IO ()) -> Logger a
makeLogger =
  Logger

-- | Log with a logger.
log :: Logger a -> a -> IO ()
log (Logger f) =
  f