monoid-map-0.2.0.0: A monoidal map with the right group instance

Safe HaskellNone
LanguageHaskell2010

Data.MonoidMap

Description

This module contains a newtype wrapper around Map that has a correct Group instance compared to the one for MonoidalMap, in that it has a unique neutral element. This comes with different constraints on the parameters (check the instances for Semigroup and Monoid of the corresponding data structures if you're interested).

Synopsis

Documentation

newtype MonoidMap k v Source #

Newtype wrapper around Data.Map.Monoidal.MonoidalMap

Constructors

MonoidMap 

Fields

Instances
(TypeError (Text "Use mapMonoidMap instead of fmap; MonoidMap is not a Functor because mempty values would need to be deleted, and Functors cannot change the shape of a datastructure") :: Constraint) => Functor (MonoidMap k) Source # 
Instance details

Defined in Data.MonoidMap

Methods

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

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

Foldable (MonoidMap k) Source # 
Instance details

Defined in Data.MonoidMap

Methods

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

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

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

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

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

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

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

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

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

null :: MonoidMap k a -> Bool #

length :: MonoidMap k a -> Int #

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

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

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

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

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

(Eq k, Eq v) => Eq (MonoidMap k v) Source # 
Instance details

Defined in Data.MonoidMap

Methods

(==) :: MonoidMap k v -> MonoidMap k v -> Bool #

(/=) :: MonoidMap k v -> MonoidMap k v -> Bool #

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

Defined in Data.MonoidMap

Methods

compare :: MonoidMap k v -> MonoidMap k v -> Ordering #

(<) :: MonoidMap k v -> MonoidMap k v -> Bool #

(<=) :: MonoidMap k v -> MonoidMap k v -> Bool #

(>) :: MonoidMap k v -> MonoidMap k v -> Bool #

(>=) :: MonoidMap k v -> MonoidMap k v -> Bool #

max :: MonoidMap k v -> MonoidMap k v -> MonoidMap k v #

min :: MonoidMap k v -> MonoidMap k v -> MonoidMap k v #

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

Defined in Data.MonoidMap

Methods

showsPrec :: Int -> MonoidMap k v -> ShowS #

show :: MonoidMap k v -> String #

showList :: [MonoidMap k v] -> ShowS #

(Monoid a, DecidablyEmpty a, Ord k) => Semigroup (MonoidMap k a) Source # 
Instance details

Defined in Data.MonoidMap

Methods

(<>) :: MonoidMap k a -> MonoidMap k a -> MonoidMap k a #

sconcat :: NonEmpty (MonoidMap k a) -> MonoidMap k a #

stimes :: Integral b => b -> MonoidMap k a -> MonoidMap k a #

(Ord k, DecidablyEmpty a) => Monoid (MonoidMap k a) Source # 
Instance details

Defined in Data.MonoidMap

Methods

mempty :: MonoidMap k a #

mappend :: MonoidMap k a -> MonoidMap k a -> MonoidMap k a #

mconcat :: [MonoidMap k a] -> MonoidMap k a #

(Ord k, DecidablyEmpty a, Group a, Commutative a) => Commutative (MonoidMap k a) Source # 
Instance details

Defined in Data.MonoidMap

(Ord k, DecidablyEmpty a, Group a) => Group (MonoidMap k a) Source # 
Instance details

Defined in Data.MonoidMap

Methods

negateG :: MonoidMap k a -> MonoidMap k a #

(~~) :: MonoidMap k a -> MonoidMap k a -> MonoidMap k a #

(Ord k, DecidablyEmpty v) => DecidablyEmpty (MonoidMap k v) Source # 
Instance details

Defined in Data.MonoidMap

Methods

isEmpty :: MonoidMap k v -> Bool #

(DecidablyEmpty (QueryResult q), Ord k, Query q) => Query (MonoidMap k q) Source # 
Instance details

Defined in Data.MonoidMap

Associated Types

type QueryResult (MonoidMap k q) :: Type #

Methods

crop :: MonoidMap k q -> QueryResult (MonoidMap k q) -> QueryResult (MonoidMap k q) #

type QueryResult (MonoidMap k q) Source # 
Instance details

Defined in Data.MonoidMap

mapMonoidMap :: DecidablyEmpty b => (a -> b) -> MonoidMap k a -> MonoidMap k b Source #

traverseMonoidMap :: (Ord k, DecidablyEmpty b, Applicative f) => (a -> f b) -> MonoidMap k a -> f (MonoidMap k b) Source #

monoidMap :: (Ord k, DecidablyEmpty v) => MonoidalMap k v -> MonoidMap k v Source #

Convert a MonoidalMap into a MonoidMap