packages feed

HaRe-0.6: tools/base/Map60204.hs

module Map60204 where


#if __GLASGOW_HASKELL__ >= 604 

import qualified Data.Map as M

insertM x t bs = M.insert x t bs 

emptyM = M.empty
lookupM x env = M.lookup x env
keysM env = M.keys env
elemsM env = M.elems env
toListM = M.toList
mapM' f bs = M.map f bs 

addListToM fm key_elt_pairs = addListTo_C (\ old new -> new) fm key_elt_pairs
 where 
   addListTo_C combiner fm key_elt_pairs
     = foldl add fm key_elt_pairs	-- foldl adds from the left
     where
      add fmap (key,elt) = M.insertWith combiner key elt fmap

addListTo_CM combiner fm key_elt_pairs
   = foldl add fm key_elt_pairs	 -- foldl adds from the left
   where
   add fmap (key,elt) = M.insertWith combiner key elt fmap

findWithDefaultM a k fm = M.findWithDefault a k fm

#else

import qualified Data.FiniteMap as M

insertM x t bs = M.addToFM bs x t 
emptyM = M.emptyFM
lookupM x env = M.lookupFM env x 
keysM env = M.keysFM env
elemsM env = M.eltsFM env
toListM = M.fmToList
addListToM fm key_elt_pairs = M.addListToFM fm key_elt_pairs
mapM' f bs  = M.mapFM (const f) bs
addListTo_CM combiner fm key_elt_pairs = M.addListToFM_C combiner fm key_elt_pairs
findWithDefaultM a k fm = M.lookupWithDefaultFM fm  a k

#endif