[project @ 2004-12-24 12:12:28 by krasimir]
[ghc-base.git] / Data / FiniteMap.hs
index f1db267..3f3fd04 100644 (file)
@@ -84,11 +84,17 @@ module Data.FiniteMap (
 #endif
     ) where
 
+import Prelude -- necessary to get dependencies right
+
 import Data.Maybe ( isJust )
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
 #endif
 
+#ifdef __HADDOCK__
+import Prelude
+#endif
+
 #ifdef COMPILING_GHC
 IMP_Ubiq(){-uitous-}
 # ifdef DEBUG
@@ -176,14 +182,14 @@ plusFM_C  :: (Ord key OUTPUTABLE_key) => (elt -> elt -> elt)
                           -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt
 
 -- | @(minusFM a1 a2)@ deletes from @a1@ any mappings which are bound in @a2@
-minusFM                :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt
+minusFM                :: (Ord key OUTPUTABLE_key) => FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt1
 
 -- | @(intersectFM a1 a2)@ returns a new 'FiniteMap' containing
 -- mappings from @a1@ for which @a2@ also has a mapping with the same
 -- key.
 intersectFM    :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt
 
--- | Returns the interesction of two mappings, using the specified
+-- | Returns the intersection of two mappings, using the specified
 -- combination function to combine values.
 intersectFM_C  :: (Ord key OUTPUTABLE_key) => (elt1 -> elt2 -> elt3)
                           -> FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt3
@@ -273,6 +279,11 @@ listToFM = addListToFM emptyFM
 bagToFM = foldBag plusFM (\ (k,v) -> unitFM k v) emptyFM
 #endif
 
+instance (Show k, Show e) => Show (FiniteMap k e) where
+  showsPrec p m = showsPrec p (fmToList m)
+
+instance Functor (FiniteMap k) where
+  fmap f = mapFM (const f)
 
 -- ---------------------------------------------------------------------------
 -- Adding to and deleting from @FiniteMaps@