X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FFiniteMap.hs;h=8bafafce1d349c15afb854c48962c4d888691a00;hb=9846058c21cf4eae3d5b4b3b977db2b85342771e;hp=167b0efeccf26e7e1b1e3731fee66fae778da23d;hpb=7d090bf5e03ee22db47edfd73a0b542b32408704;p=ghc-base.git diff --git a/Data/FiniteMap.hs b/Data/FiniteMap.hs index 167b0ef..8bafafc 100644 --- a/Data/FiniteMap.hs +++ b/Data/FiniteMap.hs @@ -8,6 +8,8 @@ -- Stability : provisional -- Portability : portable -- +-- NOTE: Data.FiniteMap is DEPRECATED, please use "Data.Map" instead. +-- -- A finite map implementation, derived from the paper: -- /Efficient sets: a balancing act/, S. Adams, -- Journal of functional programming 3(4) Oct 1993, pp553-562 @@ -38,7 +40,9 @@ #define OUTPUTABLE_key {--} #endif -module Data.FiniteMap ( +module Data.FiniteMap + {-# DEPRECATED "Please use Data.Map instead." #-} + ( -- * The @FiniteMap@ type FiniteMap, -- abstract type @@ -84,9 +88,14 @@ module Data.FiniteMap ( #endif ) where +import Prelude -- necessary to get dependencies right + import Data.Maybe ( isJust ) #ifdef __GLASGOW_HASKELL__ import GHC.Base +import Data.Typeable +import Data.Generics.Basics +import Data.Generics.Instances #endif #ifdef __HADDOCK__ @@ -115,6 +124,7 @@ import Bag ( foldBag ) #endif /* not GHC */ + -- --------------------------------------------------------------------------- -- The signature of the module @@ -283,6 +293,23 @@ instance (Show k, Show e) => Show (FiniteMap k e) where instance Functor (FiniteMap k) where fmap f = mapFM (const f) +#if __GLASGOW_HASKELL__ + +#include "Typeable.h" +INSTANCE_TYPEABLE2(FiniteMap,arrayTc,"FiniteMap") + +-- This instance preserves data abstraction at the cost of inefficiency. +-- We omit reflection services for the sake of data abstraction. + +instance (Data a, Data b, Ord a) => Data (FiniteMap a b) where + gfoldl f z fm = z listToFM `f` (fmToList fm) + toConstr _ = error "toConstr" + gunfold _ _ = error "gunfold" + dataTypeOf _ = mkNorepType "Data.FiniteMap.FiniteMap" + +#endif + + -- --------------------------------------------------------------------------- -- Adding to and deleting from @FiniteMaps@