free-monad-example/src/Logger/Language.hs
Sanchayan Maity e4c13abefa src: Refactor DB and Logger out of lib
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
2020-07-28 18:27:33 +05:30

19 lines
417 B
Haskell

{-# LANGUAGE GADTs #-}
module Logger.Language where
import Control.Monad.Free.Church (F, liftF)
import Data.Text (Text)
data LoggerMethodF next where
LogMessage :: Text -> (() -> next) -> LoggerMethodF next
instance Functor LoggerMethodF where
fmap f (LogMessage msg next) = LogMessage msg (f . next)
type Logger = F LoggerMethodF
logMessage :: Text -> Logger ()
logMessage msg = liftF $ LogMessage msg id