-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Containers with monoidal accumulation
--   
--   Containers with merging via monoidal accumulation. The <a>Monoid</a>
--   instances provided by the <tt>containers</tt> and
--   <tt>unordered-containers</tt> packages merge structures in a
--   left-biased manner instead of using the underlying monoidal structure
--   of the value.
--   
--   This package wraps the types provided by these packages, but provides
--   <tt>Monoid</tt> instances implemented in terms of the value type's
--   <a>mappend</a>. For instance, the <tt>Monoid</tt> <tt>Map</tt>
--   instance looks like,
--   
--   <pre>
--   instance (Ord k, Semigroup a) =&gt; Monoid (MonoidalMap k a)
--   </pre>
@package monoidal-containers
@version 0.4.0.0


-- | This module provides a <a>HashMap</a> variant which uses the value's
--   <a>Monoid</a> instance to accumulate conflicting entries when merging
--   <tt>Map</tt>s.
--   
--   While some functions mirroring those of <a>HashMap</a> are provided
--   here for convenience, more specialized needs will likely want to use
--   either the <a>Newtype</a> or <a>Wrapped</a> instances to manipulate
--   the underlying <tt>Map</tt>.
module Data.HashMap.Monoidal

-- | A <tt>HashMap</tt> with monoidal accumulation
newtype MonoidalHashMap k a
MonoidalHashMap :: HashMap k a -> MonoidalHashMap k a
[getMonoidalHashMap] :: MonoidalHashMap k a -> HashMap k a

-- | <i>O(n*log n)</i>. Return a list of this map's elements. The list is
--   produced lazily. The order of its elements is unspecified.
toList :: MonoidalHashMap k a -> [(k, a)]

-- | <i>O(n*log n)</i>. Construct a map with the supplied mappings. If the
--   list contains duplicate mappings, values will be merged using (mappend
--   newVal oldVal).
fromList :: (Eq k, Hashable k, Semigroup a) => [(k, a)] -> MonoidalHashMap k a

-- | <i>O(1)</i>. A map with a single element.
singleton :: (Eq k, Hashable k) => k -> a -> MonoidalHashMap k a

-- | <i>O(1)</i>. The number of elements in the map.
size :: MonoidalHashMap k a -> Int

-- | <i>O(log n)</i>. Is the key a member of the map? See also
--   <a>notMember</a>.
member :: (Eq k, Hashable k) => k -> MonoidalHashMap k a -> Bool

-- | <i>O(log n)</i>. Is the key not a member of the map? See also
--   <a>member</a>.
notMember :: (Eq k, Hashable k) => k -> MonoidalHashMap k a -> Bool

-- | <i>O(log n)</i> Return the value to which the specified key is mapped,
--   or <a>Nothing</a> if this map contains no mapping for the key.
lookup :: (Eq k, Hashable k) => k -> MonoidalHashMap k v -> Maybe v

-- | <i>O(log n)</i> Return the value to which the specified key is mapped,
--   or mempty if this map contains no mapping for the key.
lookupM :: (Eq k, Hashable k, Monoid v) => k -> MonoidalHashMap k v -> v

-- | <i>O(n)</i>. Return a list of this map's values. The list is produced
--   lazily.
elems :: MonoidalHashMap k a -> [a]

-- | <i>O(n)</i>. Return all keys of the map in ascending order. Subject to
--   list fusion.
keys :: MonoidalHashMap k a -> [k]

-- | <i>O(log n)</i>. Delete a key and its value from the map. When the key
--   is not a member of the map, the original map is returned.
delete :: (Eq k, Hashable k) => k -> MonoidalHashMap k a -> MonoidalHashMap k a

-- | <i>O(n)</i>. Map a function to each key of a map, if it will result in
--   duplicated mappings, their values will be merged in unspecified order
mapKeys :: (Semigroup a, Hashable k, Eq k, Hashable k', Eq k') => (k -> k') -> MonoidalHashMap k a -> MonoidalHashMap k' a

-- | <i>O(log n)</i>. Insert a value on some key, if it exists -- mappend
--   to the existing one.
insert :: (Semigroup a, Hashable k, Eq k) => a -> k -> MonoidalHashMap k a -> MonoidalHashMap k a

-- | <i>O(log n)</i>. Insert a value on some key with a function, if value
--   under key exists -- replace it.
insertOrReplace :: (Semigroup a, Hashable k, Eq k) => a -> k -> MonoidalHashMap k a -> MonoidalHashMap k a

-- | <i>O(log n)</i>. Modify a value on some key with a function, if value
--   under key doesn't exist -- use mempty.
modify :: (Monoid a, Hashable k, Eq k) => (a -> a) -> k -> MonoidalHashMap k a -> MonoidalHashMap k a

-- | <i>O(log n)</i>. Modify a value on some key with a function, providing
--   a default value if that key doesn't exist.
modifyDef :: (Semigroup a, Hashable k, Eq k) => a -> (a -> a) -> k -> MonoidalHashMap k a -> MonoidalHashMap k a

-- | <i>O(n)</i> Transform this map by applying a function to every value.
map :: (v1 -> v2) -> MonoidalHashMap k v1 -> MonoidalHashMap k v2

-- | <i>O(n)</i> Filter this map by retaining only elements satisfying a
--   predicate.
filterWithKey :: (k -> v -> Bool) -> MonoidalHashMap k v -> MonoidalHashMap k v
instance Data.Hashable.Class.Hashable k => Data.Hashable.Class.Hashable1 (Data.HashMap.Monoidal.MonoidalHashMap k)
instance (Data.Hashable.Class.Hashable k, Data.Hashable.Class.Hashable a) => Data.Hashable.Class.Hashable (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (Data.Data.Data k, Data.Data.Data a, GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Data.Data (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance Data.Traversable.Traversable (Data.HashMap.Monoidal.MonoidalHashMap k)
instance Data.Foldable.Foldable (Data.HashMap.Monoidal.MonoidalHashMap k)
instance (Control.DeepSeq.NFData k, Control.DeepSeq.NFData a) => Control.DeepSeq.NFData (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Classes.Eq k, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance GHC.Base.Functor (Data.HashMap.Monoidal.MonoidalHashMap k)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Read.Read k, GHC.Read.Read a) => GHC.Read.Read (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Show.Show k, GHC.Show.Show a) => GHC.Show.Show (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.Ixed (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.At (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance Control.Lens.Each.Each (Data.HashMap.Monoidal.MonoidalHashMap k a) (Data.HashMap.Monoidal.MonoidalHashMap k b) a b
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.FunctorWithIndex k (Data.HashMap.Monoidal.MonoidalHashMap k)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.FoldableWithIndex k (Data.HashMap.Monoidal.MonoidalHashMap k)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.TraversableWithIndex k (Data.HashMap.Monoidal.MonoidalHashMap k)
instance Control.Lens.Empty.AsEmpty (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance Control.Lens.Wrapped.Wrapped (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Base.Semigroup a) => GHC.Base.Monoid (Data.HashMap.Monoidal.MonoidalHashMap k a)
instance Control.Newtype.Newtype (Data.HashMap.Monoidal.MonoidalHashMap k a) (Data.HashMap.Base.HashMap k a)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Base.Semigroup a) => GHC.Exts.IsList (Data.HashMap.Monoidal.MonoidalHashMap k a)


-- | This module provides a <a>Map</a> variant which uses the value's
--   <a>Monoid</a> instance to accumulate conflicting entries when merging
--   <tt>Map</tt>s.
--   
--   While some functions mirroring those of <a>Map</a> are provided here
--   for convenience, more specialized needs will likely want to use either
--   the <a>Newtype</a> or <a>Wrapped</a> instances to manipulate the
--   underlying <tt>Map</tt>.
module Data.Map.Monoidal

-- | A <tt>Map</tt> with monoidal accumulation
newtype MonoidalMap k a
MonoidalMap :: Map k a -> MonoidalMap k a
[getMonoidalMap] :: MonoidalMap k a -> Map k a

-- | <i>O(1)</i>. A map with a single element.
singleton :: k -> a -> MonoidalMap k a

-- | <i>O(1)</i>. The number of elements in the map.
size :: MonoidalMap k a -> Int

-- | <i>O(log n)</i>. Is the key a member of the map? See also
--   <a>notMember</a>.
member :: Ord k => k -> MonoidalMap k a -> Bool

-- | <i>O(log n)</i>. Is the key not a member of the map? See also
--   <a>member</a>.
notMember :: Ord k => k -> MonoidalMap k a -> Bool

-- | <i>O(log n)</i>. The expression <tt>(<a>findWithDefault</a> def k
--   map)</tt> returns the value at key <tt>k</tt> or returns default value
--   <tt>def</tt> when the key is not in the map.
findWithDefault :: Ord k => a -> k -> MonoidalMap k a -> a

-- | <i>O(n)</i>. Return all elements of the map and their keys
assocs :: MonoidalMap k a -> [(k, a)]

-- | <i>O(n)</i>. Return all elements of the map in the ascending order of
--   their keys. Subject to list fusion.
elems :: MonoidalMap k a -> [a]

-- | <i>O(n)</i>. Return all keys of the map in ascending order. Subject to
--   list fusion.
keys :: MonoidalMap k a -> [k]
(!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
infixl 9 !
(\\) :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
infixl 9 \\
adjust :: forall k a. Ord k => (a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
adjustWithKey :: forall k a. Ord k => (k -> a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
alter :: forall k a. Ord k => (Maybe a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a

-- | <i>O(log n)</i>. Delete a key and its value from the map. When the key
--   is not a member of the map, the original map is returned.
delete :: Ord k => k -> MonoidalMap k a -> MonoidalMap k a
deleteAt :: forall k a. Int -> MonoidalMap k a -> MonoidalMap k a
deleteFindMax :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
deleteFindMin :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
deleteMax :: forall k a. MonoidalMap k a -> MonoidalMap k a
deleteMin :: forall k a. MonoidalMap k a -> MonoidalMap k a
difference :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
differenceWith :: forall k a b. Ord k => (a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
differenceWithKey :: forall k a b. Ord k => (k -> a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
elemAt :: forall k a. Int -> MonoidalMap k a -> (k, a)
empty :: forall k a. MonoidalMap k a
filter :: forall k a. (a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
filterWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
findIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Int
findMax :: forall k a. MonoidalMap k a -> (k, a)
findMin :: forall k a. MonoidalMap k a -> (k, a)
foldMapWithKey :: forall k a m. Monoid m => (k -> a -> m) -> MonoidalMap k a -> m
foldl :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
foldl' :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
foldlWithKey :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
foldlWithKey' :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
foldr :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
foldr' :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
foldrWithKey :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
foldrWithKey' :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
fromAscList :: forall k a. Eq k => [(k, a)] -> MonoidalMap k a
fromAscListWith :: forall k a. Eq k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromAscListWithKey :: forall k a. Eq k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromDistinctAscList :: forall k a. [(k, a)] -> MonoidalMap k a
fromList :: forall k a. Ord k => [(k, a)] -> MonoidalMap k a
fromListWith :: forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromListWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromSet :: forall k a. (k -> a) -> Set k -> MonoidalMap k a
insert :: forall k a. Ord k => k -> a -> MonoidalMap k a -> MonoidalMap k a
insertLookupWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
insertWith :: forall k a. Ord k => (a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
insertWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
intersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
intersectionWithKey :: forall k a b c. Ord k => (k -> a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
isProperSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
isProperSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
isSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
isSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
keysSet :: forall k a. MonoidalMap k a -> Set k
lookup :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe a
lookupGE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupGT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe Int
lookupLE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupLT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
mapAccum :: forall k a b c. (a -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapAccumRWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapEither :: forall k a b c. (a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
mapEitherWithKey :: forall k a b c. (k -> a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapKeysMonotonic :: forall k1 k2 a. (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapKeysWith :: forall k1 k2 a. Ord k2 => (a -> a -> a) -> (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapMaybe :: forall k a b. (a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
mapMaybeWithKey :: forall k a b. (k -> a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
mapWithKey :: forall k a b. (k -> a -> b) -> MonoidalMap k a -> MonoidalMap k b
maxView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
maxViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
mergeWithKey :: forall k a b c. Ord k => (k -> a -> b -> Maybe c) -> (MonoidalMap k a -> MonoidalMap k c) -> (MonoidalMap k b -> MonoidalMap k c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
minView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
minViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
null :: forall k a. MonoidalMap k a -> Bool
partition :: forall k a. (a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
partitionWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
split :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
splitLookup :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, Maybe a, MonoidalMap k a)
splitRoot :: forall k a. MonoidalMap k a -> [MonoidalMap k a]
toAscList :: forall k a. MonoidalMap k a -> [(k, a)]
toDescList :: forall k a. MonoidalMap k a -> [(k, a)]
toList :: forall k a. MonoidalMap k a -> [(k, a)]
traverseWithKey :: Applicative t => (k -> a -> t b) -> MonoidalMap k a -> t (MonoidalMap k b)
unionWith :: forall k a. Ord k => (a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
unionWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
unionsWith :: forall k a. Ord k => (a -> a -> a) -> [MonoidalMap k a] -> MonoidalMap k a
update :: forall k a. Ord k => (a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
updateAt :: forall k a. (k -> a -> Maybe a) -> Int -> MonoidalMap k a -> MonoidalMap k a
updateLookupWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
updateMax :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMaxWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMin :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMinWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
valid :: forall k a. Ord k => MonoidalMap k a -> Bool
instance (Data.Data.Data k, Data.Data.Data a, GHC.Classes.Ord k) => Data.Data.Data (Data.Map.Monoidal.MonoidalMap k a)
instance Data.Aeson.Types.ToJSON.ToJSONKey k => Data.Aeson.Types.ToJSON.ToJSON1 (Data.Map.Monoidal.MonoidalMap k)
instance (Data.Aeson.Types.FromJSON.FromJSONKey k, GHC.Classes.Ord k) => Data.Aeson.Types.FromJSON.FromJSON1 (Data.Map.Monoidal.MonoidalMap k)
instance (Data.Aeson.Types.ToJSON.ToJSON a, Data.Aeson.Types.ToJSON.ToJSONKey k) => Data.Aeson.Types.ToJSON.ToJSON (Data.Map.Monoidal.MonoidalMap k a)
instance (Data.Aeson.Types.FromJSON.FromJSONKey k, GHC.Classes.Ord k, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Map.Monoidal.MonoidalMap k a)
instance Data.Traversable.Traversable (Data.Map.Monoidal.MonoidalMap k)
instance Data.Foldable.Foldable (Data.Map.Monoidal.MonoidalMap k)
instance (Control.DeepSeq.NFData k, Control.DeepSeq.NFData a) => Control.DeepSeq.NFData (Data.Map.Monoidal.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Map.Monoidal.MonoidalMap k a)
instance (GHC.Classes.Eq k, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Map.Monoidal.MonoidalMap k a)
instance GHC.Base.Functor (Data.Map.Monoidal.MonoidalMap k)
instance (GHC.Classes.Ord k, GHC.Read.Read k, GHC.Read.Read a) => GHC.Read.Read (Data.Map.Monoidal.MonoidalMap k a)
instance (GHC.Show.Show k, GHC.Show.Show a) => GHC.Show.Show (Data.Map.Monoidal.MonoidalMap k a)
instance GHC.Classes.Ord k => Data.Functor.Classes.Eq1 (Data.Map.Monoidal.MonoidalMap k)
instance GHC.Classes.Ord k => Data.Functor.Classes.Ord1 (Data.Map.Monoidal.MonoidalMap k)
instance GHC.Show.Show k => Data.Functor.Classes.Show1 (Data.Map.Monoidal.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.At.Ixed (Data.Map.Monoidal.MonoidalMap k a)
instance GHC.Classes.Ord k => Control.Lens.At.At (Data.Map.Monoidal.MonoidalMap k a)
instance Control.Lens.Each.Each (Data.Map.Monoidal.MonoidalMap k a) (Data.Map.Monoidal.MonoidalMap k b) a b
instance Control.Lens.Indexed.FunctorWithIndex k (Data.Map.Monoidal.MonoidalMap k)
instance Control.Lens.Indexed.FoldableWithIndex k (Data.Map.Monoidal.MonoidalMap k)
instance Control.Lens.Indexed.TraversableWithIndex k (Data.Map.Monoidal.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.Traversal.TraverseMin k (Data.Map.Monoidal.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.Traversal.TraverseMax k (Data.Map.Monoidal.MonoidalMap k)
instance Control.Lens.Empty.AsEmpty (Data.Map.Monoidal.MonoidalMap k a)
instance Control.Lens.Wrapped.Wrapped (Data.Map.Monoidal.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Data.Map.Monoidal.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Base.Monoid (Data.Map.Monoidal.MonoidalMap k a)
instance Control.Newtype.Newtype (Data.Map.Monoidal.MonoidalMap k a) (Data.Map.Internal.Map k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Exts.IsList (Data.Map.Monoidal.MonoidalMap k a)


-- | This module provides a <a>Map</a> variant which uses the value's
--   <a>Monoid</a> instance to accumulate conflicting entries when merging
--   <tt>Map</tt>s.
--   
--   While some functions mirroring those of <a>Map</a> are provided here
--   for convenience, more specialized needs will likely want to use either
--   the <a>Newtype</a> or <a>Wrapped</a> instances to manipulate the
--   underlying <tt>Map</tt>.
module Data.Map.Monoidal.Strict

-- | A <tt>Map</tt> with monoidal accumulation
newtype MonoidalMap k a
MonoidalMap :: Map k a -> MonoidalMap k a
[getMonoidalMap] :: MonoidalMap k a -> Map k a

-- | <i>O(1)</i>. A map with a single element.
singleton :: k -> a -> MonoidalMap k a

-- | <i>O(1)</i>. The number of elements in the map.
size :: MonoidalMap k a -> Int

-- | <i>O(log n)</i>. Is the key a member of the map? See also
--   <a>notMember</a>.
member :: Ord k => k -> MonoidalMap k a -> Bool

-- | <i>O(log n)</i>. Is the key not a member of the map? See also
--   <a>member</a>.
notMember :: Ord k => k -> MonoidalMap k a -> Bool

-- | <i>O(log n)</i>. The expression <tt>(<a>findWithDefault</a> def k
--   map)</tt> returns the value at key <tt>k</tt> or returns default value
--   <tt>def</tt> when the key is not in the map.
findWithDefault :: Ord k => a -> k -> MonoidalMap k a -> a

-- | <i>O(n)</i>. Return all elements of the map and their keys
assocs :: MonoidalMap k a -> [(k, a)]

-- | <i>O(n)</i>. Return all elements of the map in the ascending order of
--   their keys. Subject to list fusion.
elems :: MonoidalMap k a -> [a]

-- | <i>O(n)</i>. Return all keys of the map in ascending order. Subject to
--   list fusion.
keys :: MonoidalMap k a -> [k]
(!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
infixl 9 !
(\\) :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
infixl 9 \\
adjust :: forall k a. Ord k => (a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
adjustWithKey :: forall k a. Ord k => (k -> a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
alter :: forall k a. Ord k => (Maybe a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a

-- | <i>O(log n)</i>. Delete a key and its value from the map. When the key
--   is not a member of the map, the original map is returned.
delete :: Ord k => k -> MonoidalMap k a -> MonoidalMap k a
deleteAt :: forall k a. Int -> MonoidalMap k a -> MonoidalMap k a
deleteFindMax :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
deleteFindMin :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
deleteMax :: forall k a. MonoidalMap k a -> MonoidalMap k a
deleteMin :: forall k a. MonoidalMap k a -> MonoidalMap k a
difference :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
differenceWith :: forall k a b. Ord k => (a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
differenceWithKey :: forall k a b. Ord k => (k -> a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
elemAt :: forall k a. Int -> MonoidalMap k a -> (k, a)
empty :: forall k a. MonoidalMap k a
filter :: forall k a. (a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
filterWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
findIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Int
findMax :: forall k a. MonoidalMap k a -> (k, a)
findMin :: forall k a. MonoidalMap k a -> (k, a)
foldMapWithKey :: forall k a m. Monoid m => (k -> a -> m) -> MonoidalMap k a -> m
foldl :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
foldl' :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
foldlWithKey :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
foldlWithKey' :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
foldr :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
foldr' :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
foldrWithKey :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
foldrWithKey' :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
fromAscList :: forall k a. Eq k => [(k, a)] -> MonoidalMap k a
fromAscListWith :: forall k a. Eq k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromAscListWithKey :: forall k a. Eq k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromDistinctAscList :: forall k a. [(k, a)] -> MonoidalMap k a
fromList :: forall k a. Ord k => [(k, a)] -> MonoidalMap k a
fromListWith :: forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromListWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
fromSet :: forall k a. (k -> a) -> Set k -> MonoidalMap k a
insert :: forall k a. Ord k => k -> a -> MonoidalMap k a -> MonoidalMap k a
insertLookupWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
insertWith :: forall k a. Ord k => (a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
insertWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
intersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
intersectionWithKey :: forall k a b c. Ord k => (k -> a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
isProperSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
isProperSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
isSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
isSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
keysSet :: forall k a. MonoidalMap k a -> Set k
lookup :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe a
lookupGE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupGT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe Int
lookupLE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
lookupLT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
mapAccum :: forall k a b c. (a -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapAccumRWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
mapEither :: forall k a b c. (a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
mapEitherWithKey :: forall k a b c. (k -> a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapKeysMonotonic :: forall k1 k2 a. (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapKeysWith :: forall k1 k2 a. Ord k2 => (a -> a -> a) -> (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
mapMaybe :: forall k a b. (a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
mapMaybeWithKey :: forall k a b. (k -> a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
mapWithKey :: forall k a b. (k -> a -> b) -> MonoidalMap k a -> MonoidalMap k b
maxView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
maxViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
mergeWithKey :: forall k a b c. Ord k => (k -> a -> b -> Maybe c) -> (MonoidalMap k a -> MonoidalMap k c) -> (MonoidalMap k b -> MonoidalMap k c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
minView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
minViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
null :: forall k a. MonoidalMap k a -> Bool
partition :: forall k a. (a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
partitionWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
split :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
splitLookup :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, Maybe a, MonoidalMap k a)
splitRoot :: forall k a. MonoidalMap k a -> [MonoidalMap k a]
toAscList :: forall k a. MonoidalMap k a -> [(k, a)]
toDescList :: forall k a. MonoidalMap k a -> [(k, a)]
toList :: forall k a. MonoidalMap k a -> [(k, a)]
traverseWithKey :: Applicative t => (k -> a -> t b) -> MonoidalMap k a -> t (MonoidalMap k b)
unionWith :: forall k a. Ord k => (a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
unionWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
unionsWith :: forall k a. Ord k => (a -> a -> a) -> [MonoidalMap k a] -> MonoidalMap k a
update :: forall k a. Ord k => (a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
updateAt :: forall k a. (k -> a -> Maybe a) -> Int -> MonoidalMap k a -> MonoidalMap k a
updateLookupWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
updateMax :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMaxWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMin :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateMinWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
updateWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
valid :: forall k a. Ord k => MonoidalMap k a -> Bool
instance (Data.Data.Data k, Data.Data.Data a, GHC.Classes.Ord k) => Data.Data.Data (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance Data.Aeson.Types.ToJSON.ToJSONKey k => Data.Aeson.Types.ToJSON.ToJSON1 (Data.Map.Monoidal.Strict.MonoidalMap k)
instance (Data.Aeson.Types.FromJSON.FromJSONKey k, GHC.Classes.Ord k) => Data.Aeson.Types.FromJSON.FromJSON1 (Data.Map.Monoidal.Strict.MonoidalMap k)
instance (Data.Aeson.Types.ToJSON.ToJSON a, Data.Aeson.Types.ToJSON.ToJSONKey k) => Data.Aeson.Types.ToJSON.ToJSON (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (Data.Aeson.Types.FromJSON.FromJSONKey k, GHC.Classes.Ord k, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance Data.Traversable.Traversable (Data.Map.Monoidal.Strict.MonoidalMap k)
instance Data.Foldable.Foldable (Data.Map.Monoidal.Strict.MonoidalMap k)
instance (Control.DeepSeq.NFData k, Control.DeepSeq.NFData a) => Control.DeepSeq.NFData (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (GHC.Classes.Eq k, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance GHC.Base.Functor (Data.Map.Monoidal.Strict.MonoidalMap k)
instance (GHC.Classes.Ord k, GHC.Read.Read k, GHC.Read.Read a) => GHC.Read.Read (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (GHC.Show.Show k, GHC.Show.Show a) => GHC.Show.Show (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance GHC.Classes.Ord k => Data.Functor.Classes.Eq1 (Data.Map.Monoidal.Strict.MonoidalMap k)
instance GHC.Classes.Ord k => Data.Functor.Classes.Ord1 (Data.Map.Monoidal.Strict.MonoidalMap k)
instance GHC.Show.Show k => Data.Functor.Classes.Show1 (Data.Map.Monoidal.Strict.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.At.Ixed (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance GHC.Classes.Ord k => Control.Lens.At.At (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance Control.Lens.Each.Each (Data.Map.Monoidal.Strict.MonoidalMap k a) (Data.Map.Monoidal.Strict.MonoidalMap k b) a b
instance Control.Lens.Indexed.FunctorWithIndex k (Data.Map.Monoidal.Strict.MonoidalMap k)
instance Control.Lens.Indexed.FoldableWithIndex k (Data.Map.Monoidal.Strict.MonoidalMap k)
instance Control.Lens.Indexed.TraversableWithIndex k (Data.Map.Monoidal.Strict.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.Traversal.TraverseMin k (Data.Map.Monoidal.Strict.MonoidalMap k)
instance GHC.Classes.Ord k => Control.Lens.Traversal.TraverseMax k (Data.Map.Monoidal.Strict.MonoidalMap k)
instance Control.Lens.Empty.AsEmpty (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance Control.Lens.Wrapped.Wrapped (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Base.Monoid (Data.Map.Monoidal.Strict.MonoidalMap k a)
instance Control.Newtype.Newtype (Data.Map.Monoidal.Strict.MonoidalMap k a) (Data.Map.Internal.Map k a)
instance (GHC.Classes.Ord k, GHC.Base.Semigroup a) => GHC.Exts.IsList (Data.Map.Monoidal.Strict.MonoidalMap k a)
