hgeometry-combinatorial
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

HGeometry.Map.NonEmpty.Monoidal

Description

A NonEmpty Monoidal Map, i.e. combining the monoidal maps combines the elements with their semigroup operation.

Synopsis

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 

Fields

Instances

Instances details
Foldable1WithIndex k (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

ifoldMap1 :: Semigroup m => (k -> a -> m) -> MonoidalNEMap k a -> m Source #

ifoldMap1' :: Semigroup m => (k -> a -> m) -> MonoidalNEMap k a -> m Source #

ifoldrMap1 :: (k -> a -> b) -> (k -> a -> b -> b) -> MonoidalNEMap k a -> b Source #

ifoldlMap1' :: (k -> a -> b) -> (k -> b -> a -> b) -> MonoidalNEMap k a -> b Source #

ifoldlMap1 :: (k -> a -> b) -> (k -> b -> a -> b) -> MonoidalNEMap k a -> b Source #

ifoldrMap1' :: (k -> a -> b) -> (k -> a -> b -> b) -> MonoidalNEMap k a -> b Source #

FoldableWithIndex k (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

ifoldMap :: Monoid m => (k -> a -> m) -> MonoidalNEMap k a -> m Source #

ifoldMap' :: Monoid m => (k -> a -> m) -> MonoidalNEMap k a -> m Source #

ifoldr :: (k -> a -> b -> b) -> b -> MonoidalNEMap k a -> b Source #

ifoldl :: (k -> b -> a -> b) -> b -> MonoidalNEMap k a -> b Source #

ifoldr' :: (k -> a -> b -> b) -> b -> MonoidalNEMap k a -> b Source #

ifoldl' :: (k -> b -> a -> b) -> b -> MonoidalNEMap k a -> b Source #

FunctorWithIndex k (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

imap :: (k -> a -> b) -> MonoidalNEMap k a -> MonoidalNEMap k b Source #

TraversableWithIndex k (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

itraverse :: Applicative f => (k -> a -> f b) -> MonoidalNEMap k a -> f (MonoidalNEMap k b) Source #

Foldable1 (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

fold1 :: Semigroup m => MonoidalNEMap k m -> m #

foldMap1 :: Semigroup m => (a -> m) -> MonoidalNEMap k a -> m #

foldMap1' :: Semigroup m => (a -> m) -> MonoidalNEMap k a -> m #

toNonEmpty :: MonoidalNEMap k a -> NonEmpty a #

maximum :: Ord a => MonoidalNEMap k a -> a #

minimum :: Ord a => MonoidalNEMap k a -> a #

head :: MonoidalNEMap k a -> a #

last :: MonoidalNEMap k a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> MonoidalNEMap k a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> MonoidalNEMap k a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> MonoidalNEMap k a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> MonoidalNEMap k a -> b #

Functor (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

fmap :: (a -> b) -> MonoidalNEMap k a -> MonoidalNEMap k b #

(<$) :: a -> MonoidalNEMap k b -> MonoidalNEMap k a #

Foldable (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

fold :: Monoid m => MonoidalNEMap k m -> m #

foldMap :: Monoid m => (a -> m) -> MonoidalNEMap k a -> m #

foldMap' :: Monoid m => (a -> m) -> MonoidalNEMap k a -> m #

foldr :: (a -> b -> b) -> b -> MonoidalNEMap k a -> b #

foldr' :: (a -> b -> b) -> b -> MonoidalNEMap k a -> b #

foldl :: (b -> a -> b) -> b -> MonoidalNEMap k a -> b #

foldl' :: (b -> a -> b) -> b -> MonoidalNEMap k a -> b #

foldr1 :: (a -> a -> a) -> MonoidalNEMap k a -> a #

foldl1 :: (a -> a -> a) -> MonoidalNEMap k a -> a #

toList :: MonoidalNEMap k a -> [a] #

null :: MonoidalNEMap k a -> Bool #

length :: MonoidalNEMap k a -> Int #

elem :: Eq a => a -> MonoidalNEMap k a -> Bool #

maximum :: Ord a => MonoidalNEMap k a -> a #

minimum :: Ord a => MonoidalNEMap k a -> a #

sum :: Num a => MonoidalNEMap k a -> a #

product :: Num a => MonoidalNEMap k a -> a #

Traversable (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

traverse :: Applicative f => (a -> f b) -> MonoidalNEMap k a -> f (MonoidalNEMap k b) #

sequenceA :: Applicative f => MonoidalNEMap k (f a) -> f (MonoidalNEMap k a) #

mapM :: Monad m => (a -> m b) -> MonoidalNEMap k a -> m (MonoidalNEMap k b) #

sequence :: Monad m => MonoidalNEMap k (m a) -> m (MonoidalNEMap k a) #

Traversable1 (MonoidalNEMap k) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

Methods

traverse1 :: Apply f => (a -> f b) -> MonoidalNEMap k a -> f (MonoidalNEMap k b) Source #

sequence1 :: Apply f => MonoidalNEMap k (f b) -> f (MonoidalNEMap k b) Source #

(Ord k, Semigroup v) => Semigroup (MonoidalNEMap k v) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

(Show k, Show v) => Show (MonoidalNEMap k v) Source # 
Instance details

Defined in HGeometry.Map.NonEmpty.Monoidal

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 -> Maybe v infixl 9 Source #

Lookup in the Map \(O(\log n)\)

(!) :: Ord k => MonoidalNEMap k v -> k -> v infixl 9 Source #

unsafe lookup in the Map \(O(\log n)\)