| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Mini.Data.Map
Description
A structure mapping unique keys to values
Synopsis
- data Map k a
- empty :: Map k a
- fromList :: Ord k => [(k, a)] -> Map k a
- singleton :: k -> a -> Map k a
- difference :: Ord k => Map k a -> Map k b -> Map k a
- intersection :: Ord k => Map k a -> Map k b -> Map k a
- union :: Ord k => Map k a -> Map k a -> Map k a
- toAscList :: Map k a -> [(k, a)]
- toDescList :: Map k a -> [(k, a)]
- foldlWithKey :: (b -> k -> a -> b) -> b -> Map k a -> b
- foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b
- adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a
- delete :: Ord k => k -> Map k a -> Map k a
- filter :: Ord k => (a -> Bool) -> Map k a -> Map k a
- filterWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> Map k a
- insert :: Ord k => k -> a -> Map k a -> Map k a
- update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a
- isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool
- lookup :: Ord k => k -> Map k a -> Maybe a
- lookupMax :: Map k a -> Maybe (k, a)
- lookupMin :: Map k a -> Maybe (k, a)
- member :: Ord k => k -> Map k a -> Bool
- null :: Map k a -> Bool
- size :: Map k a -> Int
- traverseWithKey :: Applicative f => (k -> a -> f b) -> Map k a -> f (Map k b)
- valid :: Ord k => Map k a -> Bool
Type
A map from keys k to values a, internally structured as an AVL tree
Instances
| Foldable (Map k) Source # | |
Defined in Mini.Data.Map Methods fold :: Monoid m => Map k m -> m # foldMap :: Monoid m => (a -> m) -> Map k a -> m # foldMap' :: Monoid m => (a -> m) -> Map k a -> m # foldr :: (a -> b -> b) -> b -> Map k a -> b # foldr' :: (a -> b -> b) -> b -> Map k a -> b # foldl :: (b -> a -> b) -> b -> Map k a -> b # foldl' :: (b -> a -> b) -> b -> Map k a -> b # foldr1 :: (a -> a -> a) -> Map k a -> a # foldl1 :: (a -> a -> a) -> Map k a -> a # elem :: Eq a => a -> Map k a -> Bool # maximum :: Ord a => Map k a -> a # minimum :: Ord a => Map k a -> a # | |
| Traversable (Map k) Source # | |
| Functor (Map k) Source # | |
| Ord k => Monoid (Map k a) Source # | |
| Ord k => Semigroup (Map k a) Source # | |
| (Show k, Show a) => Show (Map k a) Source # | |
| (Eq k, Eq a) => Eq (Map k a) Source # | |
| (Ord k, Ord a) => Ord (Map k a) Source # | |
Construction
fromList :: Ord k => [(k, a)] -> Map k a Source #
O(n log n) Make a map from a tail-biased list of (key, value) pairs
Combination
difference :: Ord k => Map k a -> Map k b -> Map k a Source #
O(n log n) Subtract a map by another via key matching
intersection :: Ord k => Map k a -> Map k b -> Map k a Source #
O(n log n) Intersect a map with another via left-biased key matching
union :: Ord k => Map k a -> Map k a -> Map k a Source #
O(n log n) Unite a map with another via left-biased key matching
Conversion
toAscList :: Map k a -> [(k, a)] Source #
O(n) Turn a map into a list of (key, value) pairs in ascending order
toDescList :: Map k a -> [(k, a)] Source #
O(n) Turn a map into a list of (key, value) pairs in descending order
Fold
foldlWithKey :: (b -> k -> a -> b) -> b -> Map k a -> b Source #
O(n) Reduce a map with a left-associative operation and an accumulator
foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b Source #
O(n) Reduce a map with a right-associative operation and an accumulator
Modification
adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a Source #
O(log n) Adjust with an operation the value of a key in a map
filter :: Ord k => (a -> Bool) -> Map k a -> Map k a Source #
O(n) Keep the bins whose values satisfy a predicate
filterWithKey :: Ord k => (k -> a -> Bool) -> Map k a -> Map k a Source #
O(n) Keep the bins whose keys and values satisfy a predicate
insert :: Ord k => k -> a -> Map k a -> Map k a Source #
O(log n) Insert a key and its value into a map, overwriting if present
update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a Source #
O(log n) Modify the value of a key or delete its bin with an operation
Query
isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool Source #
O(n log n) Check whether the bins of one map exist in the other
lookup :: Ord k => k -> Map k a -> Maybe a Source #
O(log n) Fetch the value of a key in a map, or Nothing if absent
lookupMax :: Map k a -> Maybe (k, a) Source #
O(log n) Fetch the bin with the maximum key, or Nothing if empty
lookupMin :: Map k a -> Maybe (k, a) Source #
O(log n) Fetch the bin with the minimum key, or Nothing if empty
Traversal
traverseWithKey :: Applicative f => (k -> a -> f b) -> Map k a -> f (Map k b) Source #
O(n) Lift a map with a lifting operation on keys and values
Validation
valid :: Ord k => Map k a -> Bool Source #
O(n) Check whether a map is internally height-balanced and ordered
Examples
fromList: tail-biased means that if a list of (key, value) pairs contains
pairs with identical keys, the one closest to the end of the list is kept.
>>>fromList [('a',1),('b',2),('c',3),('b',4),('a',5)]{('a',5),('b',4),('c',3)}
intersection, union: left-biased means that if the operands contain bins
with identical keys, the bins from the left operand is kept.
>>>fromList [('a',1),('b',2)] `intersection` fromList [('c',3),('b',4),('a',5)]{('a',1),('b',2)}>>>fromList [('a',1),('b',2)] `union` fromList [('c',3),('b',4),('a',5)]{('a',1),('b',2),('c',3)}
update: If the key does not exist, the map is unchanged. If the key exists and
the result of the operation is Just x, the value of the corresponding bin is
updated to x. If the key exists and the result of the operation is Nothing,
the corresponding bin is removed.
>>>f a = if a == 2 then Just 9 else Nothing>>>update f 'c' $ fromList [('a',1),('b',2)]{('a',1),('b',2)}>>>update f 'b' $ fromList [('a',1),('b',2)]{('a',1),('b',9)}>>>update f 'a' $ fromList [('a',1),('b',2)]{('b',2)}