enummapset-0.5.2.0: Data/EnumMap.hs
-- |
-- Module : $Header$
-- Description : Data.IntMap with Enum keys.
-- Copyright : (c) 2011-2013 Michal Terepeta
-- License : BSD3
-- Maintainer : michal.terepeta@gmail.com
-- Stability : alpha
-- Portability : uses DeriveDataTypeable and GeneralizedNewtypeDeriving
-- This is a simple wrapper for 'Data.IntMap' that works with any type of keys
-- that are instances of 'Enum' type class. For documentation please see the
-- one for 'Data.IntMap'.
module Data.EnumMap
( module Data.EnumMap.Lazy
, insertWith'
, insertWithKey'
, fold
, foldWithKey
) where
import Prelude hiding ( filter, foldr, foldl, lookup, map, null )
import Data.EnumMap.Lazy
import Data.EnumMap.Base
import qualified Data.IntMap as I
insertWith' :: (Enum k) => (a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
insertWith' f k x = EnumMap . I.insertWith' f (fromEnum k) x . unWrap
insertWithKey' :: (Enum k)
=> (k -> a -> a -> a) -> k -> a -> EnumMap k a -> EnumMap k a
insertWithKey' f k x =
EnumMap . I.insertWithKey' (f . toEnum) (fromEnum k) x . unWrap
fold :: (Enum k) => (a -> b -> b) -> b -> EnumMap k a -> b
fold f a = I.fold f a . unWrap
foldWithKey :: (Enum k) => (k -> a -> b -> b) -> b -> EnumMap k a -> b
foldWithKey f a = I.foldWithKey (f . toEnum) a . unWrap