X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FFiniteMap.hs;h=3f3fd04710b9185c7ea8f068d60b0316cb4c78f2;hb=beaf733bae2acdf2cc1a2b1234e4532a0ccc655d;hp=f1db267b57a6d6b1717ffe1316675f25cb740562;hpb=947f1a663f78a84933afc9f3a3f475e27da862ee;p=ghc-base.git diff --git a/Data/FiniteMap.hs b/Data/FiniteMap.hs index f1db267..3f3fd04 100644 --- a/Data/FiniteMap.hs +++ b/Data/FiniteMap.hs @@ -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@