ghc-7.10 does not like Monad instances that are not Functor and Applicative instances...
[packages/hoopl.git] / testing / OptSupport.hs
index 11eaa63..dacbcc4 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE GADTs, RankNTypes #-}
+{-# LANGUAGE CPP, GADTs, RankNTypes #-}
 {-# OPTIONS_GHC -Wall -fno-warn-name-shadowing #-}
 module OptSupport (mapVE, mapEE, mapEN, mapVN, fold_EE, fold_EN, insnToG) where
 
@@ -6,6 +6,14 @@ import Control.Monad
 import Data.Maybe
 import Prelude hiding (succ)
 
+#if CABAL
+#if !MIN_VERSION_base(4,8,0)
+import Control.Applicative (Applicative(..))
+#endif
+#else
+import Control.Applicative (Applicative(..))
+#endif
+
 import Compiler.Hoopl
 import IR
 
@@ -34,6 +42,14 @@ instance Monad Mapped where
     where asNew (Old a)   = New a
           asNew m@(New _) = m
 
+instance Functor Mapped where
+  fmap = liftM
+  
+instance Applicative Mapped where
+  pure = return
+  (<*>) = ap
+
+
 makeTotal :: (a -> Maybe a) -> (a -> Mapped a)
 makeTotal f a = case f a of Just a' -> New a'
                             Nothing -> Old a