{-# LANGUAGE CPP #-} #if __GLASGOW_HASKELL__ >= 702 {-# LANGUAGE Trustworthy #-} #endif ------------------------------------------------------------------------ -- | -- Module : Data.HashMap.Lazy -- Copyright : 2010-2012 Johan Tibell -- License : BSD-style -- Maintainer : johan.tibell@gmail.com -- Stability : provisional -- Portability : portable -- -- A map from /hashable/ keys to values. A map cannot contain -- duplicate keys; each key can map to at most one value. A 'HashMap' -- makes no guarantees as to the order of its elements. -- -- This map is strict in the keys and lazy in the values; keys are -- evaluated to /weak head normal form/ before they are added to the -- map. -- -- The implementation is based on /hash array mapped tries/. A -- 'HashMap' is often faster than other tree-based set types, -- especially when key comparison is expensive, as in the case of -- strings. -- -- Many operations have a average-case complexity of /O(log n)/. The -- implementation uses a large base (i.e. 16) so in practice these -- operations are constant time. module Data.HashMap.Lazy ( HashMap -- * Construction , empty , singleton -- * Basic interface , HM.null , size , member , HM.lookup , lookupDefault , (!) , insert , insertWith , delete , adjust -- * Combine -- ** Union , union , unionWith , unions -- * Transformations , HM.map , traverseWithKey -- * Difference and intersection , difference , intersection , intersectionWith -- * Folds , foldl' , foldlWithKey' , HM.foldr , foldrWithKey -- * Filter , HM.filter , filterWithKey -- * Conversions , keys , elems -- ** Lists , toList , fromList , fromListWith ) where import Data.HashMap.Base as HM