Karya, built on Mon Jul 24 11:39:07 PDT 2017 (patch 33511aca01257b76b88de7c7a2763b7a965c084e)

Safe HaskellNone

Util.Map

Description

Extra utils for Data.Map.

Synopsis

Documentation

get :: Ord k => a -> k -> Map k a -> a Source #

This is just findWithDefault by a shorter name.

soft_insert :: Ord k => k -> v -> Map k v -> Map k v Source #

This is like insert, but do nothing if the key is already present.

filter_key :: Ord k => (k -> Bool) -> Map k a -> Map k a Source #

delete_keys :: Ord k => [k] -> Map k a -> Map k a Source #

insert_list :: Ord k => [(k, v)] -> Map k v -> Map k v Source #

split2 :: Ord k => k -> Map k a -> (Map k a, Map k a) Source #

Like split, except include a matched key in the above map.

split3 :: Ord k => k -> k -> Map k a -> (Map k a, Map k a, Map k a) Source #

Split the map into the maps below, within, and above the given range. low to high is half-open, as usual.

within :: Ord k => k -> k -> Map k a -> Map k a Source #

Return the subset of the map that is between a half-open low and high key.

lookup_below :: Ord k => k -> Map k a -> Maybe.Maybe (k, a) Source #

invert :: (Ord k, Ord a) => Map k a -> Map a k Source #

multimap :: Ord k => [(k, a)] -> Map k [a] Source #

TODO Would it be more efficient to do 'fromListWith (++)'?

unique :: Ord a => [(a, b)] -> (Map a b, [(a, b)]) Source #

Like Map.fromList, but only accept the first of duplicate keys, and also return the rejected duplicates.

unique2 :: Ord k => [(k, v)] -> (Map k v, [(k, [v])]) Source #

Make a map, but if any keys collide, omit that key and return it along with the multiple values.

zip_intersection :: Ord k => Map k v1 -> Map k v2 -> [(k, v1, v2)] Source #

Given two maps, pair up the elements in map1 with a samed-keyed element in map2, if there is one. Elements that are only in map1 or map2 will not be included in the output.

pairs :: Ord k => Map k v1 -> Map k v2 -> [(k, Seq.Paired v1 v2)] Source #

Pair up elements from each map with equal keys.

unique_union Source #

Arguments

:: Ord k 
=> Map k a 
-> Map k a 
-> (Map k a, Map k a)

(union, rejected)

Like union, but also return a map of rejected duplicate keys from the map on the right.

unique_unions :: Ord k => [Map k a] -> (Map k a, Map k a) Source #

Like unions, but return a map of the rejected keys. Like Map.unions, the first key in the list wins. If there are multiple conflicting keys, only the first one will show up in the reject map.

min :: Map k a -> Maybe.Maybe (k, a) Source #

Safe versions of findMin and findMax.

max :: Map k a -> Maybe.Maybe (k, a) Source #

mappend :: (Ord k, Monoid a) => Map k a -> Map k a -> Map k a Source #

The Data.Map Monoid instance is just a plain union, and doesn't mappend the values.