Add Functor, Foldable, Traversable instances for LabelMap
authorBen Gamari <ben@smart-cactus.org>
Mon, 28 Mar 2016 13:23:44 +0000 (15:23 +0200)
committerBen Gamari <ben@smart-cactus.org>
Wed, 30 Mar 2016 09:39:41 +0000 (11:39 +0200)
src/Compiler/Hoopl/Label.hs
src/Compiler/Hoopl/Unique.hs

index a1c890a..0f6c753 100644 (file)
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP, TypeFamilies #-}
+{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
 #if __GLASGOW_HASKELL__ >= 701
 {-# LANGUAGE Safe #-}
 #endif
@@ -17,6 +18,10 @@ where
 
 import Compiler.Hoopl.Collections
 import Compiler.Hoopl.Unique
+#if !MIN_VERSION_base(4,8,0)
+import Data.Traversable (Traversable)
+import Data.Foldable (Foldable)
+#endif
 
 -----------------------------------------------------------------------------
 --             Label
@@ -64,7 +69,8 @@ instance IsSet LabelSet where
 -----------------------------------------------------------------------------
 -- LabelMap
 
-newtype LabelMap v = LM (UniqueMap v) deriving (Eq, Ord, Show)
+newtype LabelMap v = LM (UniqueMap v)
+  deriving (Eq, Ord, Show, Functor, Foldable, Traversable)
 
 instance IsMap LabelMap where
   type KeyOf LabelMap = Label
index 79a7c7c..ca2ca7a 100644 (file)
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP, TypeFamilies #-}
+{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable #-}
 #if __GLASGOW_HASKELL__ >= 709
 {-# LANGUAGE Safe #-}
 #elif __GLASGOW_HASKELL__ >= 701
@@ -26,6 +27,10 @@ import qualified Data.IntSet as S
 
 import Control.Applicative as AP
 import Control.Monad (ap,liftM)
+#if !MIN_VERSION_base(4,8,0)
+import Data.Traversable (Traversable)
+import Data.Foldable (Foldable)
+#endif
 
 -----------------------------------------------------------------------------
 --             Unique
@@ -69,7 +74,8 @@ instance IsSet UniqueSet where
 -----------------------------------------------------------------------------
 -- UniqueMap
 
-newtype UniqueMap v = UM (M.IntMap v) deriving (Eq, Ord, Show)
+newtype UniqueMap v = UM (M.IntMap v)
+  deriving (Eq, Ord, Show, Functor, Foldable, Traversable)
 
 instance IsMap UniqueMap where
   type KeyOf UniqueMap = Unique