{-# LANGUAGE FlexibleContexts #-} module Package.C.Logging ( putNormal , putDiagnostic , putLoud ) where import Control.Monad.Reader import Package.C.Type.Verbosity putVerbosity :: (MonadReader Verbosity m, MonadIO m) => Verbosity -> String -> m () putVerbosity verb s = do v <- ask when (v >= verb) (liftIO (putStrLn s)) putNormal :: (MonadReader Verbosity m, MonadIO m) => String -> m () putNormal = putVerbosity Normal putDiagnostic :: (MonadReader Verbosity m, MonadIO m) => String -> m () putDiagnostic = putVerbosity Diagnostic putLoud :: (MonadReader Verbosity m, MonadIO m) => String -> m () putLoud = putVerbosity Loud