| Copyright | Copyright (C) 2012 Sebastian M. Schlatt, Timo B. Huebel, Uwe Schmidt |
|---|---|
| License | MIT |
| Maintainer | Uwe Schmidt |
| Safe Haskell | None |
| Language | Haskell98 |
Hunt.Common.DocIdMap
Description
Efficient Map implementation for DocIds.
- newtype DocIdMap v = DIM {}
- empty :: DocIdMap v
- singleton :: DocId -> v -> DocIdMap v
- null :: DocIdMap v -> Bool
- member :: DocId -> DocIdMap v -> Bool
- lookup :: DocId -> DocIdMap v -> Maybe v
- insert :: DocId -> v -> DocIdMap v -> DocIdMap v
- delete :: DocId -> DocIdMap v -> DocIdMap v
- insertWith :: (v -> v -> v) -> DocId -> v -> DocIdMap v -> DocIdMap v
- size :: DocIdMap v -> Int
- sizeWithLimit :: Int -> DocIdMap v -> Maybe Int
- union :: DocIdMap v -> DocIdMap v -> DocIdMap v
- intersection :: DocIdMap v -> DocIdMap v -> DocIdMap v
- difference :: DocIdMap v -> DocIdMap w -> DocIdMap v
- diffWithSet :: DocIdMap v -> DocIdSet -> DocIdMap v
- unionWith :: (v -> v -> v) -> DocIdMap v -> DocIdMap v -> DocIdMap v
- intersectionWith :: (v -> v -> v) -> DocIdMap v -> DocIdMap v -> DocIdMap v
- differenceWith :: (v -> v -> Maybe v) -> DocIdMap v -> DocIdMap v -> DocIdMap v
- unionsWith :: (v -> v -> v) -> [DocIdMap v] -> DocIdMap v
- map :: (v -> r) -> DocIdMap v -> DocIdMap r
- filter :: (v -> Bool) -> DocIdMap v -> DocIdMap v
- filterWithKey :: (DocId -> v -> Bool) -> DocIdMap v -> DocIdMap v
- mapWithKey :: (DocId -> v -> r) -> DocIdMap v -> DocIdMap r
- traverseWithKey :: Applicative t => (DocId -> a -> t b) -> DocIdMap a -> t (DocIdMap b)
- foldr :: (v -> b -> b) -> b -> DocIdMap v -> b
- foldrWithKey :: (DocId -> v -> b -> b) -> b -> DocIdMap v -> b
- foldl :: (b -> v -> b) -> b -> DocIdMap v -> b
- fromList :: [(DocId, v)] -> DocIdMap v
- fromDocIdSet :: (Int -> v) -> DocIdSet -> DocIdMap v
- fromAscList :: [(DocId, v)] -> DocIdMap v
- toList :: DocIdMap v -> [(DocId, v)]
- keys :: DocIdMap v -> [DocId]
- elems :: DocIdMap v -> [v]
Documentation
An efficient Map implementation for DocIds.
Instances
| Functor DocIdMap | |
| Foldable DocIdMap | |
| IndexValue Occurrences | |
| Eq v => Eq (DocIdMap v) | |
| Show v => Show (DocIdMap v) | |
| ToJSON v => ToJSON (DocIdMap v) | |
| FromJSON v => FromJSON (DocIdMap v) | |
| Monoid v => Monoid (DocIdMap v) | |
| Binary v => Binary (DocIdMap v) | |
| NFData v => NFData (DocIdMap v) | |
| Typeable (* -> *) DocIdMap |
insert :: DocId -> v -> DocIdMap v -> DocIdMap v Source
Insert a DocId and value in the map.
If the DocId is already present in the map, the associated value is replaced with the supplied
value. insert is equivalent to insertWith const.
insertWith :: (v -> v -> v) -> DocId -> v -> DocIdMap v -> DocIdMap v Source
Insert with a function, combining new value and old value.
insertWith f docId value mp will insert the pair (docId, value) into mp if docId does
not exist in the map. If the DocId does exist, the function will insert the pair
(docId, f new_value old_value).
sizeWithLimit :: Int -> DocIdMap v -> Maybe Int Source
The number of elements limited up to a maximum
union :: DocIdMap v -> DocIdMap v -> DocIdMap v Source
The (left-biased) union of two maps.
It prefers the first map when duplicate DocId are encountered,
i.e. (union == unionWith const).
intersection :: DocIdMap v -> DocIdMap v -> DocIdMap v Source
The (left-biased) intersection of two maps (based on DocIds).
difference :: DocIdMap v -> DocIdMap w -> DocIdMap v Source
Difference between two maps (based on DocIds).
diffWithSet :: DocIdMap v -> DocIdSet -> DocIdMap v Source
Difference between the map and a set of DocIds.
unionWith :: (v -> v -> v) -> DocIdMap v -> DocIdMap v -> DocIdMap v Source
The union with a combining function.
intersectionWith :: (v -> v -> v) -> DocIdMap v -> DocIdMap v -> DocIdMap v Source
The intersection with a combining function.
differenceWith :: (v -> v -> Maybe v) -> DocIdMap v -> DocIdMap v -> DocIdMap v Source
Difference with a combining function.
unionsWith :: (v -> v -> v) -> [DocIdMap v] -> DocIdMap v Source
The union of a list of maps, with a combining operation.
filter :: (v -> Bool) -> DocIdMap v -> DocIdMap v Source
Filter all values that satisfy some predicate.
filterWithKey :: (DocId -> v -> Bool) -> DocIdMap v -> DocIdMap v Source
Filter all DocIds/values that satisfy some predicate.
mapWithKey :: (DocId -> v -> r) -> DocIdMap v -> DocIdMap r Source
Map a function over all values in the map.
traverseWithKey :: Applicative t => (DocId -> a -> t b) -> DocIdMap a -> t (DocIdMap b) Source
That is, behaves exactly like a regular traverseWithKey f s == fromList $ traverse ((k, v) -> (,) k $ f k v) (toList m)traverse except that the traversing
function also has access to the DocId associated with a value.
traverseWithKey (\k v -> if odd k then Just (succ v) else Nothing) (fromList [(1, 'a'), (5, 'e')]) == Just (fromList [(1, 'b'), (5, 'f')]) traverseWithKey (\k v -> if odd k then Just (succ v) else Nothing) (fromList [(2, 'c')]) == Nothing
foldrWithKey :: (DocId -> v -> b -> b) -> b -> DocIdMap v -> b Source
Fold the DocIds and values in the map using the given right-associative
binary operator, such that
.foldrWithKey f z == foldr (uncurry f) z . toAscList
For example,
keys map = foldrWithKey (\k x ks -> k:ks) [] map
let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
foldrWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"fromAscList :: [(DocId, v)] -> DocIdMap v Source
toList :: DocIdMap v -> [(DocId, v)] Source
Convert the map to a list of DocId/value pairs.
Subject to list fusion.