Copyright | Copyright (C) 2012 Sebastian M. Schlatt, Timo B. Huebel, Uwe Schmidt |
---|---|
License | MIT |
Maintainer | Uwe Schmidt |
Safe Haskell | None |
Language | Haskell98 |
Efficient Map implementation for DocId
s.
- 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 DocId
s.
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 DocId
s).
difference :: DocIdMap v -> DocIdMap w -> DocIdMap v Source
Difference between two maps (based on DocId
s).
diffWithSet :: DocIdMap v -> DocIdSet -> DocIdMap v Source
Difference between the map and a set of DocId
s.
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 DocId
s/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 DocId
s 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.