Make TypeMap an instance of Outputable
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 5 Dec 2011 04:00:34 +0000 (04:00 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 5 Dec 2011 04:00:34 +0000 (04:00 +0000)
compiler/coreSyn/TrieMap.lhs

index b7ee95c..d8a134e 100644 (file)
@@ -14,7 +14,7 @@
 {-# LANGUAGE TypeFamilies #-}
 module TrieMap(
    CoreMap, emptyCoreMap, extendCoreMap, lookupCoreMap, foldCoreMap,
-   TypeMap, 
+   TypeMap, foldTypeMap, 
    CoercionMap, 
    MaybeMap, 
    ListMap,
@@ -488,6 +488,12 @@ data TypeMap a
        , tm_tc_app :: NameEnv (ListMap TypeMap a)
        , tm_forall :: TypeMap (BndrMap a) }
 
+instance Outputable a => Outputable (TypeMap a) where
+  ppr m = text "TypeMap elts" <+> ppr (foldTypeMap (:) [] m)
+
+foldTypeMap :: (a -> b -> b) -> b -> TypeMap a -> b
+foldTypeMap k z m = fdT k m z
+
 wrapEmptyTypeMap :: TypeMap a
 wrapEmptyTypeMap = TM { tm_var  = emptyTM
                       , tm_app  = EmptyTM