monoidmap-0.0.1.3: Monoidal map type
Copyright© 2022–2024 Jonathan Knowles
LicenseApache-2.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Examples.NestedMonoidMap

Description

A nested map with compound keys, implemented in terms of MonoidMap.

Synopsis

Type

data NestedMonoidMap k1 k2 v Source #

Instances

Instances details
(Ord k1, Ord k2, MonoidNull v) => Monoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

mempty :: NestedMonoidMap k1 k2 v #

mappend :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

mconcat :: [NestedMonoidMap k1 k2 v] -> NestedMonoidMap k1 k2 v #

(Ord k1, Ord k2, MonoidNull v) => Semigroup (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

(<>) :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

sconcat :: NonEmpty (NestedMonoidMap k1 k2 v) -> NestedMonoidMap k1 k2 v #

stimes :: Integral b => b -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

(Show k1, Show k2, Show v) => Show (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

showsPrec :: Int -> NestedMonoidMap k1 k2 v -> ShowS #

show :: NestedMonoidMap k1 k2 v -> String #

showList :: [NestedMonoidMap k1 k2 v] -> ShowS #

(Ord k1, Ord k2, MonoidNull v) => Commutative (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Eq k1, Eq k2, Eq v) => Eq (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

(==) :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool #

(/=) :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool #

(Ord k1, Ord k2, MonoidNull v, GCDMonoid v) => GCDMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

gcd :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

(Ord k1, Ord k2, MonoidNull v, LeftGCDMonoid v) => LeftGCDMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

commonPrefix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

stripCommonPrefix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> (NestedMonoidMap k1 k2 v, NestedMonoidMap k1 k2 v, NestedMonoidMap k1 k2 v) #

(Ord k1, Ord k2, MonoidNull v, RightGCDMonoid v) => RightGCDMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

commonSuffix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

stripCommonSuffix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> (NestedMonoidMap k1 k2 v, NestedMonoidMap k1 k2 v, NestedMonoidMap k1 k2 v) #

(Ord k1, Ord k2, MonoidNull v, LCMMonoid v) => LCMMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

lcm :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

(Ord k1, Ord k2, MonoidNull v, Monus v) => Monus (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

(<\>) :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v #

(Ord k1, Ord k2, MonoidNull v, OverlappingGCDMonoid v) => OverlappingGCDMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Ord k1, Ord k2, MonoidNull v) => MonoidNull (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

null :: NestedMonoidMap k1 k2 v -> Bool #

(Ord k1, Ord k2, MonoidNull v) => PositiveMonoid (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Ord k1, Ord k2, MonoidNull v, Reductive v) => Cancellative (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Ord k1, Ord k2, MonoidNull v, LeftReductive v) => LeftCancellative (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Ord k1, Ord k2, MonoidNull v, LeftReductive v) => LeftReductive (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

isPrefixOf :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool #

stripPrefix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Maybe (NestedMonoidMap k1 k2 v) #

(Ord k1, Ord k2, MonoidNull v, Reductive v) => Reductive (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

(</>) :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Maybe (NestedMonoidMap k1 k2 v) #

(Ord k1, Ord k2, MonoidNull v, RightReductive v) => RightCancellative (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

(Ord k1, Ord k2, MonoidNull v, RightReductive v) => RightReductive (NestedMonoidMap k1 k2 v) Source # 
Instance details

Defined in Examples.NestedMonoidMap

Methods

isSuffixOf :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool #

stripSuffix :: NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Maybe (NestedMonoidMap k1 k2 v) #

Construction

fromFlatList :: (Ord k1, Ord k2, MonoidNull v) => [((k1, k2), v)] -> NestedMonoidMap k1 k2 v Source #

fromFlatMap :: (Ord k1, Ord k2, MonoidNull v) => Map (k1, k2) v -> NestedMonoidMap k1 k2 v Source #

fromNestedList :: (Ord k1, Ord k2, MonoidNull v) => [(k1, [(k2, v)])] -> NestedMonoidMap k1 k2 v Source #

fromNestedMap :: (Ord k2, MonoidNull v) => Map k1 (Map k2 v) -> NestedMonoidMap k1 k2 v Source #

Deconstruction

toFlatList :: (Ord k1, Ord k2, MonoidNull v) => NestedMonoidMap k1 k2 v -> [((k1, k2), v)] Source #

toFlatMap :: (Ord k1, Ord k2, MonoidNull v) => NestedMonoidMap k1 k2 v -> Map (k1, k2) v Source #

toNestedList :: (Ord k1, Ord k2, MonoidNull v) => NestedMonoidMap k1 k2 v -> [(k1, [(k2, v)])] Source #

toNestedMap :: NestedMonoidMap k1 k2 v -> Map k1 (Map k2 v) Source #

Basic operations

get :: (Ord k1, Ord k2, MonoidNull v) => k1 -> k2 -> NestedMonoidMap k1 k2 v -> v Source #

set :: (Ord k1, Ord k2, MonoidNull v) => k1 -> k2 -> v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

adjust :: (Ord k1, Ord k2, MonoidNull v) => (v -> v) -> k1 -> k2 -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

nullify :: (Ord k1, Ord k2, MonoidNull v) => k1 -> k2 -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

Membership

nonNullKey :: (Ord k1, Ord k2, MonoidNull v) => k1 -> k2 -> NestedMonoidMap k1 k2 v -> Bool Source #

nonNullKeys :: (Ord k1, Ord k2, MonoidNull v) => NestedMonoidMap k1 k2 v -> Set (k1, k2) Source #

Intersection

intersection :: (Ord k1, Ord k2, MonoidNull v, GCDMonoid v) => NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

intersectionWith :: (Ord k1, Ord k2, MonoidNull v) => (v -> v -> v) -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

Union

union :: (Ord k1, Ord k2, MonoidNull v, LCMMonoid v) => NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

unionWith :: (Ord k1, Ord k2, MonoidNull v) => (v -> v -> v) -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v Source #

Comparison

isSubmapOf :: (Ord k1, Ord k2, MonoidNull v, Reductive v) => NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool Source #

isSubmapOfBy :: (Ord k1, Ord k2, MonoidNull v, Reductive v) => (v -> v -> Bool) -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool Source #

disjoint :: (Ord k1, Ord k2, MonoidNull v, GCDMonoid v) => NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool Source #

disjointBy :: (Ord k1, Ord k2, MonoidNull v, GCDMonoid v) => (v -> v -> Bool) -> NestedMonoidMap k1 k2 v -> NestedMonoidMap k1 k2 v -> Bool Source #