|
Data.FiniteMap | Portability | portable | Stability | provisional | Maintainer | libraries@haskell.org |
|
|
|
|
Contents |
- The FiniteMap type
- Construction
- Lookup operations
- Adding elements
- Deleting elements
- Combination
- Extracting information
- Other operations
|
|
Description |
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
|
|
Synopsis |
|
|
|
|
The FiniteMap type |
|
data FiniteMap key elt |
A mapping from keys to elts. | Instances | |
|
|
Construction |
|
emptyFM :: FiniteMap key elt |
An empty FiniteMap. |
|
unitFM :: key -> elt -> FiniteMap key elt |
A FiniteMap containing a single mapping |
|
listToFM :: (Ord key) => [(key, elt)] -> FiniteMap key elt |
Makes a FiniteMap from a list of (key,value) pairs. In the
case of duplicates, the last is taken |
|
Lookup operations |
|
lookupFM :: (Ord key) => FiniteMap key elt -> key -> Maybe elt |
Looks up a key in a FiniteMap, returning Just v if the key
was found with value v, or Nothing otherwise. |
|
lookupWithDefaultFM :: (Ord key) => FiniteMap key elt -> elt -> key -> elt |
Looks up a key in a FiniteMap, returning elt if the specified
key was not found. |
|
elemFM :: (Ord key) => key -> FiniteMap key elt -> Bool |
Returns True if the specified key has a mapping in this
FiniteMap, or False otherwise. |
|
Adding elements |
|
addToFM :: (Ord key) => FiniteMap key elt -> key -> elt -> FiniteMap key elt |
Adds an element to a FiniteMap. Any previous mapping with the same
key is overwritten. |
|
addToFM_C :: (Ord key) => (elt -> elt -> elt) -> FiniteMap key elt -> key -> elt -> FiniteMap key elt |
Adds an element to a FiniteMap. If there is already an element
with the same key, then the specified combination function is used
to calculate the new value. |
|
addListToFM :: (Ord key) => FiniteMap key elt -> [(key, elt)] -> FiniteMap key elt |
Adds a list of elements to a FiniteMap, in the order given in
the list. Overwrites previous mappings. |
|
addListToFM_C :: (Ord key) => (elt -> elt -> elt) -> FiniteMap key elt -> [(key, elt)] -> FiniteMap key elt |
A list version of addToFM_C. The elements are added in the
order given in the list. |
|
Deleting elements |
|
delFromFM :: (Ord key) => FiniteMap key elt -> key -> FiniteMap key elt |
Deletes an element from a FiniteMap. If there is no element with
the specified key, then the original FiniteMap is returned. |
|
delListFromFM :: (Ord key) => FiniteMap key elt -> [key] -> FiniteMap key elt |
List version of delFromFM. |
|
Combination |
|
plusFM :: (Ord key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt |
Combine two FiniteMaps. Mappings in the second argument shadow
those in the first. |
|
plusFM_C :: (Ord key) => (elt -> elt -> elt) -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt |
Combine two FiniteMaps. The specified combination function is
used to calculate the new value when there are two elements with
the same key. |
|
Extracting information |
|
fmToList :: FiniteMap key elt -> [(key, elt)] |
Convert a FiniteMap to a [(key, elt)] sorted by Ord key
|
|
keysFM :: FiniteMap key elt -> [key] |
Extract the keys from a FiniteMap, in the order of the keys, so keysFM == map fst . fmToList
|
|
eltsFM :: FiniteMap key elt -> [elt] |
Extract the elements from a FiniteMap, in the order of the keys, so eltsFM == map snd . fmToList
|
|
sizeFM :: FiniteMap key elt -> Int |
|
isEmptyFM :: FiniteMap key elt -> Bool |
|
Other operations |
|
minusFM :: (Ord key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt |
(minusFM a1 a2) deletes from a1 any mappings which are bound in a2 |
|
foldFM :: (key -> elt -> a -> a) -> a -> FiniteMap key elt -> a |
|
intersectFM :: (Ord key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt |
(intersectFM a1 a2) returns a new FiniteMap containing
mappings from a1 for which a2 also has a mapping with the same
key. |
|
intersectFM_C :: (Ord key) => (elt1 -> elt2 -> elt3) -> FiniteMap key elt1 -> FiniteMap key elt2 -> FiniteMap key elt3 |
Returns the interesction of two mappings, using the specified
combination function to combine values. |
|
mapFM :: (key -> elt1 -> elt2) -> FiniteMap key elt1 -> FiniteMap key elt2 |
|
filterFM :: (Ord key) => (key -> elt -> Bool) -> FiniteMap key elt -> FiniteMap key elt |
|
Produced by Haddock version 0.4 |