free-monad-example/src/Logger/Interpreter.hs

12 lines
286 B
Haskell

module Logger.Interpreter where
import Control.Monad.Free.Church (foldF)
import Logger.Language
interpretLoggerMethod :: LoggerMethodF a -> IO a
interpretLoggerMethod (LogMessage msg next) = next <$> print msg
runLogger :: Logger () -> IO ()
runLogger = foldF interpretLoggerMethod