19 lines
417 B
Haskell
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
|
|
|