| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell98 |
Data.ShareMap
Synopsis
- data ShareMap k v
- empty :: ShareMap k v
- toHashMap :: (Hashable k, Eq k) => ShareMap k v -> HashMap k v
- insertWith :: (Hashable k, Eq k) => (v -> v -> v) -> k -> v -> ShareMap k v -> ShareMap k v
- map :: (a -> b) -> ShareMap k a -> ShareMap k b
- mergeKeysWith :: (Hashable k, Eq k) => (v -> v -> v) -> k -> k -> ShareMap k v -> ShareMap k v
Documentation
A HashMap that can share the values of some entries
If two keys k1 and k2 are mapped to single v, updating
the entry for k1 also updates the entry for k2 and viceversa.
The user of the map is responsible for indicating which keys are going to share their values.
Keys can be updated with shareMapInsertWith and mergeKeysWith.
Instances
insertWith :: (Hashable k, Eq k) => (v -> v -> v) -> k -> v -> ShareMap k v -> ShareMap k v Source #
insertWith f k v m is the map m plus key k being associated to
value v.
If k is present in m, then k and any other key sharing its value
will be associated to f v (m ! k).
mergeKeysWith :: (Hashable k, Eq k) => (v -> v -> v) -> k -> k -> ShareMap k v -> ShareMap k v Source #
mergeKeysWith f k0 k1 m updates the k0 value to f (m ! k0) (m ! k1)
and k1 shares the value with k0.
If k0 and k1 are already sharing their values in m, or both keys are
missing, this operation returns m unmodified.
If only one of the keys is present, the other key is associated with the existing value.