| Copyright | (C) Frank Staals |
|---|---|
| License | see the LICENSE file |
| Maintainer | Frank Staals |
| Safe Haskell | None |
| Language | GHC2021 |
HGeometry.Map.NonEmpty.Monoidal
Description
A NonEmpty Monoidal Map, i.e. combining the monoidal maps combines the elements with their semigroup operation.
Synopsis
- newtype MonoidalNEMap k v = MonoidalNEMap {}
- singleton :: k -> v -> MonoidalNEMap k v
- fromSet :: (k -> v) -> NESet k -> MonoidalNEMap k v
- unions1WithKey :: (Foldable1 f, Ord k) => (k -> a -> a -> a) -> f (NEMap k a) -> NEMap k a
- mapWithKeyMerge1 :: (Ord k', Semigroup v') => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v'
- mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalNEMap k b -> (a, MonoidalNEMap k c)
- insert :: (Ord k, Semigroup v) => k -> v -> MonoidalNEMap k v -> MonoidalNEMap k v
- insertReplace :: Ord k => k -> v -> MonoidalNEMap k v -> MonoidalNEMap k v
- assocs :: MonoidalNEMap k v -> NonEmpty (k, v)
- toAscList :: MonoidalNEMap k v -> NonEmpty (k, v)
- keysSet :: MonoidalNEMap k v -> NESet k
- (!?) :: Ord k => MonoidalNEMap k v -> k -> Maybe v
- (!) :: Ord k => MonoidalNEMap k v -> k -> v
Documentation
newtype MonoidalNEMap k v Source #
A NonEmpty Map in which we combine conflicting elements by using their semigroup operation rather than picking the left value (as is done in the default Data.Map)
Constructors
| MonoidalNEMap | |
Instances
singleton :: k -> v -> MonoidalNEMap k v Source #
Create a singleton MonoidalNE Map
fromSet :: (k -> v) -> NESet k -> MonoidalNEMap k v Source #
Creates a non-empty Map from a nonempty Set \(O(n)\)
unions1WithKey :: (Foldable1 f, Ord k) => (k -> a -> a -> a) -> f (NEMap k a) -> NEMap k a Source #
Merge a bunch of non-empty maps with the given mergin function
mapWithKeyMerge1 :: (Ord k', Semigroup v') => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' Source #
Merge the maps. When they share a key, combine their values using a semigroup.
mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalNEMap k b -> (a, MonoidalNEMap k c) Source #
Map with some accumulator function
insert :: (Ord k, Semigroup v) => k -> v -> MonoidalNEMap k v -> MonoidalNEMap k v Source #
Insert an new key,value pair into the Map
\(O(\log n)\)
insertReplace :: Ord k => k -> v -> MonoidalNEMap k v -> MonoidalNEMap k v Source #
Insert an new key,value pair into the Map \(O(\log n)\)
assocs :: MonoidalNEMap k v -> NonEmpty (k, v) Source #
Return all key/value pairs in the map in ascending key order.
\(O(n)\)
toAscList :: MonoidalNEMap k v -> NonEmpty (k, v) Source #
Return all key/value pairs in the map in ascending key order.
\(O(n)\)
keysSet :: MonoidalNEMap k v -> NESet k Source #
Return all keys in ascending order
\(O(n)\)
(!) :: Ord k => MonoidalNEMap k v -> k -> v infixl 9 Source #
unsafe lookup in the Map \(O(\log n)\)