From b20cf4ecbf244f091f4084c11ae2350d248ce6ef Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Wed, 11 Sep 2013 18:46:54 -0500 Subject: Fix AMP warnings. Authored-by: David Luposchainsky Signed-off-by: Austin Seipp --- compiler/llvmGen/LlvmCodeGen/Base.hs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'compiler/llvmGen/LlvmCodeGen/Base.hs') diff --git a/compiler/llvmGen/LlvmCodeGen/Base.hs b/compiler/llvmGen/LlvmCodeGen/Base.hs index dda2c9e05b..6ae3c4252d 100644 --- a/compiler/llvmGen/LlvmCodeGen/Base.hs +++ b/compiler/llvmGen/LlvmCodeGen/Base.hs @@ -54,6 +54,9 @@ import UniqSupply import ErrUtils import qualified Stream +import Control.Monad (ap) +import Control.Applicative (Applicative(..)) + -- ---------------------------------------------------------------------------- -- * Some Data Types -- @@ -209,13 +212,19 @@ type LlvmEnvMap = UniqFM LlvmType -- | The Llvm monad. Wraps @LlvmEnv@ state as well as the @IO@ monad newtype LlvmM a = LlvmM { runLlvmM :: LlvmEnv -> IO (a, LlvmEnv) } + +instance Functor LlvmM where + fmap f m = LlvmM $ \env -> do (x, env') <- runLlvmM m env + return (f x, env') + +instance Applicative LlvmM where + pure = return + (<*>) = ap + instance Monad LlvmM where return x = LlvmM $ \env -> return (x, env) m >>= f = LlvmM $ \env -> do (x, env') <- runLlvmM m env runLlvmM (f x) env' -instance Functor LlvmM where - fmap f m = LlvmM $ \env -> do (x, env') <- runLlvmM m env - return (f x, env') instance HasDynFlags LlvmM where getDynFlags = LlvmM $ \env -> return (envDynFlags env, env) -- cgit v1.2.1