@@ -1,3 +1,4 @@
1{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE DeriveTraversable #-}
4{-# LANGUAGE DeriveTraversable #-}
@@ -7,45 +8,41 @@
7{-# LANGUAGE MultiParamTypeClasses #-}
8{-# LANGUAGE MultiParamTypeClasses #-}
8{-# LANGUAGE RoleAnnotations #-}
9{-# LANGUAGE RoleAnnotations #-}
9{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE StandaloneDeriving #-}
10{-# LANGUAGE TypeFamilies #-}
12{-# LANGUAGE TypeFamilies #-}
13+{-# OPTIONS_GHC -fno-warn-orphans #-}
11-- | 'Data.Map' with a better 'Monoid' instance
14-- | 'Data.Map' with a better 'Monoid' instance
13-- 'Data.Map' has @mappend = union@, which is left-biased. AppendMap has
16-- 'Data.Map' has @mappend = union@, which is left-biased. AppendMap has
14-- @mappend = unionWith mappend@ instead.
17-- @mappend = unionWith mappend@ instead.
15−module Data.AppendMap where
18+module Data.AppendMap
19+ ( module Data.AppendMap
20+ , module Data.Map.Monoidal
17import Prelude hiding (map)
23import Prelude hiding (map)
20import Data.Align
25import Data.Align
21import Data.Coerce
26import Data.Coerce
22import Data.Default
27import Data.Default
23import Data.Map (Map)
28import Data.Map (Map)
24import qualified Data.Map as Map
29import qualified Data.Map as Map
30+import Data.Map.Monoidal
25import Data.Semigroup
31import Data.Semigroup
26import Data.Set (Set)
32import Data.Set (Set)
28−import GHC.Generics (Generic)
29import Reflex.Class (FunctorMaybe (..))
33import Reflex.Class (FunctorMaybe (..))
30import Reflex.Patch (Additive, Group (..))
34import Reflex.Patch (Additive, Group (..))
32−newtype AppendMap k m = AppendMap { _unAppendMap :: Map k m }
36+{-# DEPRECATED AppendMap "Use 'MonoidalMap' instead" #-}
33− deriving (Eq, Ord, Show, Read, Typeable, Generic, Functor, Foldable, Traversable, Align)
37+type AppendMap = MonoidalMap
35−type instance (Index (AppendMap k m)) = k
39+deriving instance Ord k => Align (MonoidalMap k)
36−type instance (IxValue (AppendMap k m)) = m
38−instance Ord k => Ixed (AppendMap k m) where
39− ix i = _Wrapped . ix i
41−instance Ord k => At (AppendMap k m) where
42− at i = _Wrapped . at i
44−instance FunctorMaybe (AppendMap k) where
41+instance FunctorMaybe (MonoidalMap k) where
45 fmapMaybe = mapMaybe
42 fmapMaybe = mapMaybe
47-- | Deletes a key, returning 'Nothing' if the result is empty.
44-- | Deletes a key, returning 'Nothing' if the result is empty.
48−nonEmptyDelete :: Ord k => k -> AppendMap k a -> Maybe (AppendMap k a)
45+nonEmptyDelete :: Ord k => k -> MonoidalMap k a -> Maybe (MonoidalMap k a)
49nonEmptyDelete k vs =
46nonEmptyDelete k vs =
50 let deleted = delete k vs
47 let deleted = delete k vs
51 in if Data.AppendMap.null deleted
48 in if Data.AppendMap.null deleted
@@ -53,356 +50,313 @@ nonEmptyDelete k vs =
53 else Just deleted
50 else Just deleted
55mapMaybeNoNull :: (a -> Maybe b)
52mapMaybeNoNull :: (a -> Maybe b)
56− -> AppendMap token a
53+ -> MonoidalMap token a
57− -> Maybe (AppendMap token b)
54+ -> Maybe (MonoidalMap token b)
58mapMaybeNoNull f as =
55mapMaybeNoNull f as =
59 let bs = fmapMaybe f as
56 let bs = fmapMaybe f as
60 in if Data.AppendMap.null bs
57 in if Data.AppendMap.null bs
61 then Nothing
58 then Nothing
62 else Just bs
59 else Just bs
64−instance FunctorWithIndex k (AppendMap k) where
61+#if !MIN_VERSION_monoidal_containers(0,3,1)
65− imap f = AppendMap . imap f . _unAppendMap
62+instance (Ord k, Semigroup v) => Semigroup (MonoidalMap k v) where
66− imapped = _Wrapped . imapped
63+ MonoidalMap a <> MonoidalMap b = MonoidalMap $ Map.unionWith (<>) a b
68−instance FoldableWithIndex k (AppendMap k) where
69− ifolded = _Wrapped . ifolded
71−instance TraversableWithIndex k (AppendMap k) where
72− itraverse = itraverseOf itraversed
73− itraversed = _Wrapped . itraversed
75−instance (Ord k, Semigroup m) => Semigroup (AppendMap k m) where
76− (AppendMap m0) <> (AppendMap m1) = AppendMap $ Map.unionWith (<>) m0 m1
78−instance (Ord k, Semigroup m) => Monoid (AppendMap k m) where
82−instance (Ord k, Group q) => Group (AppendMap k q) where
66+instance (Ord k, Group q) => Group (MonoidalMap k q) where
83 negateG = map negateG
67 negateG = map negateG
85−instance (Ord k, Additive q) => Additive (AppendMap k q)
69+instance (Ord k, Additive q) => Additive (MonoidalMap k q)
87−(!) :: forall k a. Ord k => AppendMap k a -> k -> a
71+(!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
88(!) = coerce ((Map.!) :: Map k a -> k -> a)
72(!) = coerce ((Map.!) :: Map k a -> k -> a)
91−(\\) :: forall k a b. Ord k => AppendMap k a -> AppendMap k b -> AppendMap k a
75+(\\) :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
92(\\) = coerce ((Map.\\) :: Map k a -> Map k b -> Map k a)
76(\\) = coerce ((Map.\\) :: Map k a -> Map k b -> Map k a)
93−infixl 9 \\
77+infixl 9 {-"-} \\ {-"-} --These comments prevent the C preprocssor from complaining
95−null :: forall k a. AppendMap k a -> Bool
79+null :: forall k a. MonoidalMap k a -> Bool
96null = coerce (Map.null :: Map k a -> Bool)
80null = coerce (Map.null :: Map k a -> Bool)
98−size :: forall k a. AppendMap k a -> Int
99−size = coerce (Map.size :: Map k a -> Int)
101−member :: forall k a. Ord k => k -> AppendMap k a -> Bool
102−member = coerce (Map.member :: k -> Map k a -> Bool)
104−notMember :: forall k a. Ord k => k -> AppendMap k a -> Bool
105−notMember = coerce (Map.notMember :: k -> Map k a -> Bool)
107−lookup :: forall k a. Ord k => k -> AppendMap k a -> Maybe a
82+lookup :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe a
108lookup = coerce (Map.lookup :: k -> Map k a -> Maybe a)
83lookup = coerce (Map.lookup :: k -> Map k a -> Maybe a)
110−findWithDefault :: forall k a. Ord k => a -> k -> AppendMap k a -> a
111−findWithDefault = coerce (Map.findWithDefault :: a -> k -> Map k a -> a)
113−lookupLT :: forall k a. Ord k => k -> AppendMap k a -> Maybe (k, a)
85+lookupLT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
114lookupLT = coerce (Map.lookupLT :: k -> Map k a -> Maybe (k,a))
86lookupLT = coerce (Map.lookupLT :: k -> Map k a -> Maybe (k,a))
116−lookupGT :: forall k a. Ord k => k -> AppendMap k a -> Maybe (k, a)
88+lookupGT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
117lookupGT = coerce (Map.lookupGT :: k -> Map k a -> Maybe (k,a))
89lookupGT = coerce (Map.lookupGT :: k -> Map k a -> Maybe (k,a))
119−lookupLE :: forall k a. Ord k => k -> AppendMap k a -> Maybe (k, a)
91+lookupLE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
120lookupLE = coerce (Map.lookupLE :: k -> Map k a -> Maybe (k,a))
92lookupLE = coerce (Map.lookupLE :: k -> Map k a -> Maybe (k,a))
122−lookupGE :: forall k a. Ord k => k -> AppendMap k a -> Maybe (k, a)
94+lookupGE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
123lookupGE = coerce (Map.lookupGE :: k -> Map k a -> Maybe (k,a))
95lookupGE = coerce (Map.lookupGE :: k -> Map k a -> Maybe (k,a))
125−empty :: forall k a. AppendMap k a
97+empty :: forall k a. MonoidalMap k a
126empty = coerce (Map.empty :: Map k a)
98empty = coerce (Map.empty :: Map k a)
128−singleton :: forall k a. k -> a -> AppendMap k a
129−singleton = coerce (Map.singleton :: k -> a -> Map k a)
131−insert :: forall k a. Ord k => k -> a -> AppendMap k a -> AppendMap k a
100+insert :: forall k a. Ord k => k -> a -> MonoidalMap k a -> MonoidalMap k a
132insert = coerce (Map.insert :: k -> a -> Map k a -> Map k a)
101insert = coerce (Map.insert :: k -> a -> Map k a -> Map k a)
134−insertWith :: forall k a. Ord k => (a -> a -> a) -> k -> a -> AppendMap k a -> AppendMap k a
103+insertWith :: forall k a. Ord k => (a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
135insertWith = coerce (Map.insertWith :: (a -> a -> a) -> k -> a -> Map k a -> Map k a)
104insertWith = coerce (Map.insertWith :: (a -> a -> a) -> k -> a -> Map k a -> Map k a)
137−insertWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> AppendMap k a -> AppendMap k a
106+insertWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
138insertWithKey = coerce (Map.insertWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a)
107insertWithKey = coerce (Map.insertWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a)
140−insertLookupWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> AppendMap k a -> (Maybe a, AppendMap k a)
109+insertLookupWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
141insertLookupWithKey = coerce (Map.insertLookupWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a))
110insertLookupWithKey = coerce (Map.insertLookupWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a))
143−delete :: forall k a. Ord k => k -> AppendMap k a -> AppendMap k a
112+delete :: forall k a. Ord k => k -> MonoidalMap k a -> MonoidalMap k a
144delete = coerce (Map.delete :: k -> Map k a -> Map k a)
113delete = coerce (Map.delete :: k -> Map k a -> Map k a)
146−adjust :: forall k a. Ord k => (a -> a) -> k -> AppendMap k a -> AppendMap k a
115+adjust :: forall k a. Ord k => (a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
147adjust = coerce (Map.adjust :: (a -> a) -> k -> Map k a -> Map k a)
116adjust = coerce (Map.adjust :: (a -> a) -> k -> Map k a -> Map k a)
149−adjustWithKey :: forall k a. Ord k => (k -> a -> a) -> k -> AppendMap k a -> AppendMap k a
118+adjustWithKey :: forall k a. Ord k => (k -> a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
150adjustWithKey = coerce (Map.adjustWithKey :: (k -> a -> a) -> k -> Map k a -> Map k a)
119adjustWithKey = coerce (Map.adjustWithKey :: (k -> a -> a) -> k -> Map k a -> Map k a)
152−update :: forall k a. Ord k => (a -> Maybe a) -> k -> AppendMap k a -> AppendMap k a
121+update :: forall k a. Ord k => (a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
153update = coerce (Map.update :: (a -> Maybe a) -> k -> Map k a -> Map k a)
122update = coerce (Map.update :: (a -> Maybe a) -> k -> Map k a -> Map k a)
155−updateWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> AppendMap k a -> AppendMap k a
124+updateWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
156updateWithKey = coerce (Map.updateWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> Map k a)
125updateWithKey = coerce (Map.updateWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> Map k a)
158−updateLookupWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> AppendMap k a -> (Maybe a, AppendMap k a)
127+updateLookupWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
159updateLookupWithKey = coerce (Map.updateLookupWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a))
128updateLookupWithKey = coerce (Map.updateLookupWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a))
161−alter :: forall k a. Ord k => (Maybe a -> Maybe a) -> k -> AppendMap k a -> AppendMap k a
130+alter :: forall k a. Ord k => (Maybe a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
162alter = coerce (Map.alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a)
131alter = coerce (Map.alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a)
164−unionWith :: forall k a. Ord k => (a -> a -> a) -> AppendMap k a -> AppendMap k a -> AppendMap k a
133+unionWith :: forall k a. Ord k => (a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
165unionWith = coerce (Map.unionWith :: (a -> a -> a) -> Map k a -> Map k a -> Map k a)
134unionWith = coerce (Map.unionWith :: (a -> a -> a) -> Map k a -> Map k a -> Map k a)
167−unionWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> AppendMap k a -> AppendMap k a -> AppendMap k a
136+unionWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
168unionWithKey = coerce (Map.unionWithKey :: (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a)
137unionWithKey = coerce (Map.unionWithKey :: (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a)
170−unionsWith :: forall k a. Ord k => (a -> a -> a) -> [AppendMap k a] -> AppendMap k a
139+unionsWith :: forall k a. Ord k => (a -> a -> a) -> [MonoidalMap k a] -> MonoidalMap k a
171unionsWith = coerce (Map.unionsWith :: (a -> a -> a) -> [Map k a] -> Map k a)
140unionsWith = coerce (Map.unionsWith :: (a -> a -> a) -> [Map k a] -> Map k a)
173−difference :: forall k a b. Ord k => AppendMap k a -> AppendMap k b -> AppendMap k a
142+difference :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
174difference = (\\)
143difference = (\\)
176−differenceWith :: forall k a b. Ord k => (a -> b -> Maybe a) -> AppendMap k a -> AppendMap k b -> AppendMap k a
145+differenceWith :: forall k a b. Ord k => (a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
177differenceWith = coerce (Map.differenceWith :: (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
146differenceWith = coerce (Map.differenceWith :: (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
179−differenceWithKey :: forall k a b. Ord k => (k -> a -> b -> Maybe a) -> AppendMap k a -> AppendMap k b -> AppendMap k a
148+differenceWithKey :: forall k a b. Ord k => (k -> a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
180differenceWithKey = coerce (Map.differenceWithKey :: (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
149differenceWithKey = coerce (Map.differenceWithKey :: (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
182−intersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> AppendMap k a -> AppendMap k b -> AppendMap k c
151+intersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
183intersectionWith = coerce (Map.intersectionWith :: (a -> b -> c) -> Map k a -> Map k b -> Map k c)
152intersectionWith = coerce (Map.intersectionWith :: (a -> b -> c) -> Map k a -> Map k b -> Map k c)
185−intersectionWithKey :: forall k a b c. Ord k => (k -> a -> b -> c) -> AppendMap k a -> AppendMap k b -> AppendMap k c
154+intersectionWithKey :: forall k a b c. Ord k => (k -> a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
186intersectionWithKey = coerce (Map.intersectionWithKey :: (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c)
155intersectionWithKey = coerce (Map.intersectionWithKey :: (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c)
188−mergeWithKey :: forall k a b c. Ord k => (k -> a -> b -> Maybe c) -> (AppendMap k a -> AppendMap k c) -> (AppendMap k b -> AppendMap k c) -> AppendMap k a -> AppendMap k b -> AppendMap k c
157+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
189mergeWithKey = coerce (Map.mergeWithKey :: (k -> a -> b -> Maybe c) -> (Map k a -> Map k c) -> (Map k b -> Map k c) -> Map k a -> Map k b -> Map k c)
158mergeWithKey = coerce (Map.mergeWithKey :: (k -> a -> b -> Maybe c) -> (Map k a -> Map k c) -> (Map k b -> Map k c) -> Map k a -> Map k b -> Map k c)
191−map :: (a -> b) -> AppendMap k a -> AppendMap k b
160+map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
192map = fmap
161map = fmap
194−mapWithKey :: (k -> a -> b) -> AppendMap k a -> AppendMap k b
163+mapWithKey :: (k -> a -> b) -> MonoidalMap k a -> MonoidalMap k b
195−mapWithKey = imap
164+mapWithKey f (MonoidalMap m) = MonoidalMap $ Map.mapWithKey f m
197−traverseWithKey :: Applicative t => (k -> a -> t b) -> AppendMap k a -> t (AppendMap k b)
166+traverseWithKey :: Applicative t => (k -> a -> t b) -> MonoidalMap k a -> t (MonoidalMap k b)
198−traverseWithKey = itraverse
167+traverseWithKey f (MonoidalMap m) = MonoidalMap <$> Map.traverseWithKey f m
200−mapAccum :: forall k a b c. (a -> b -> (a, c)) -> a -> AppendMap k b -> (a, AppendMap k c)
169+mapAccum :: forall k a b c. (a -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
201mapAccum = coerce (Map.mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
170mapAccum = coerce (Map.mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
203−mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> AppendMap k b -> (a, AppendMap k c)
172+mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
204mapAccumWithKey = coerce (Map.mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
173mapAccumWithKey = coerce (Map.mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
206−mapAccumRWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> AppendMap k b -> (a, AppendMap k c)
175+mapAccumRWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
207mapAccumRWithKey = coerce (Map.mapAccumRWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
176mapAccumRWithKey = coerce (Map.mapAccumRWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
209−mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> AppendMap k1 a -> AppendMap k2 a
178+mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
210mapKeys = coerce (Map.mapKeys :: (k1 -> k2) -> Map k1 a -> Map k2 a)
179mapKeys = coerce (Map.mapKeys :: (k1 -> k2) -> Map k1 a -> Map k2 a)
212−mapKeysWith :: forall k1 k2 a. Ord k2 => (a -> a -> a) -> (k1 -> k2) -> AppendMap k1 a -> AppendMap k2 a
181+mapKeysWith :: forall k1 k2 a. Ord k2 => (a -> a -> a) -> (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
213mapKeysWith = coerce (Map.mapKeysWith :: (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a)
182mapKeysWith = coerce (Map.mapKeysWith :: (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a)
215−mapKeysMonotonic :: forall k1 k2 a. (k1 -> k2) -> AppendMap k1 a -> AppendMap k2 a
184+mapKeysMonotonic :: forall k1 k2 a. (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
216mapKeysMonotonic = coerce (Map.mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a)
185mapKeysMonotonic = coerce (Map.mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a)
218−foldr :: forall k a b. (a -> b -> b) -> b -> AppendMap k a -> b
187+foldr :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
219foldr = coerce (Map.foldr :: (a -> b -> b) -> b -> Map k a -> b)
188foldr = coerce (Map.foldr :: (a -> b -> b) -> b -> Map k a -> b)
221−foldl :: forall k a b. (a -> b -> a) -> a -> AppendMap k b -> a
190+foldl :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
222foldl = coerce (Map.foldl :: (a -> b -> a) -> a -> Map k b -> a)
191foldl = coerce (Map.foldl :: (a -> b -> a) -> a -> Map k b -> a)
224−foldrWithKey :: forall k a b. (k -> a -> b -> b) -> b -> AppendMap k a -> b
193+foldrWithKey :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
225foldrWithKey = coerce (Map.foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b)
194foldrWithKey = coerce (Map.foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b)
227−foldlWithKey :: forall k a b. (a -> k -> b -> a) -> a -> AppendMap k b -> a
196+foldlWithKey :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
228foldlWithKey = coerce (Map.foldlWithKey :: (a -> k -> b -> a) -> a -> Map k b -> a)
197foldlWithKey = coerce (Map.foldlWithKey :: (a -> k -> b -> a) -> a -> Map k b -> a)
230−foldMapWithKey :: forall k a m. Monoid m => (k -> a -> m) -> AppendMap k a -> m
199+foldMapWithKey :: forall k a m. Monoid m => (k -> a -> m) -> MonoidalMap k a -> m
231foldMapWithKey = coerce (Map.foldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m)
200foldMapWithKey = coerce (Map.foldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m)
233−foldr' :: forall k a b. (a -> b -> b) -> b -> AppendMap k a -> b
202+foldr' :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
234foldr' = coerce (Map.foldr' :: (a -> b -> b) -> b -> Map k a -> b)
203foldr' = coerce (Map.foldr' :: (a -> b -> b) -> b -> Map k a -> b)
236−foldl' :: forall k a b. (a -> b -> a) -> a -> AppendMap k b -> a
205+foldl' :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
237foldl' = coerce (Map.foldl' :: (a -> b -> a) -> a -> Map k b -> a)
206foldl' = coerce (Map.foldl' :: (a -> b -> a) -> a -> Map k b -> a)
239−foldrWithKey' :: forall k a b. (k -> a -> b -> b) -> b -> AppendMap k a -> b
208+foldrWithKey' :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
240foldrWithKey' = coerce (Map.foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b)
209foldrWithKey' = coerce (Map.foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b)
242−foldlWithKey' :: forall k a b. (a -> k -> b -> a) -> a -> AppendMap k b -> a
211+foldlWithKey' :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
243foldlWithKey' = coerce (Map.foldlWithKey' :: (a -> k -> b -> a) -> a -> Map k b -> a)
212foldlWithKey' = coerce (Map.foldlWithKey' :: (a -> k -> b -> a) -> a -> Map k b -> a)
245−elems :: forall k a. AppendMap k a -> [a]
246−elems = coerce (Map.elems :: Map k a -> [a])
248−keys :: forall k a. AppendMap k a -> [k]
249−keys = coerce (Map.keys :: Map k a -> [k])
251−assocs :: forall k a. AppendMap k a -> [(k, a)]
252−assocs = coerce (Map.assocs :: Map k a -> [(k, a)])
254−keysSet :: forall k a. AppendMap k a -> Set k
214+keysSet :: forall k a. MonoidalMap k a -> Set k
255keysSet = coerce (Map.keysSet :: Map k a -> Set k)
215keysSet = coerce (Map.keysSet :: Map k a -> Set k)
257−fromSet :: forall k a. (k -> a) -> Set k -> AppendMap k a
217+fromSet :: forall k a. (k -> a) -> Set k -> MonoidalMap k a
258fromSet = coerce (Map.fromSet :: (k -> a) -> Set k -> Map k a)
218fromSet = coerce (Map.fromSet :: (k -> a) -> Set k -> Map k a)
260−toList :: forall k a. AppendMap k a -> [(k, a)]
220+toList :: forall k a. MonoidalMap k a -> [(k, a)]
261toList = coerce (Map.toList :: Map k a -> [(k, a)])
221toList = coerce (Map.toList :: Map k a -> [(k, a)])
263−fromList :: forall k a. Ord k => [(k, a)] -> AppendMap k a
223+fromList :: forall k a. Ord k => [(k, a)] -> MonoidalMap k a
264fromList = coerce (Map.fromList :: [(k, a)] -> Map k a)
224fromList = coerce (Map.fromList :: [(k, a)] -> Map k a)
266−fromListWith :: forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> AppendMap k a
226+fromListWith :: forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
267fromListWith = coerce (Map.fromListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
227fromListWith = coerce (Map.fromListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
269−fromListWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> AppendMap k a
229+fromListWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
270fromListWithKey = coerce (Map.fromListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
230fromListWithKey = coerce (Map.fromListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
272−toAscList :: forall k a. AppendMap k a -> [(k, a)]
232+toAscList :: forall k a. MonoidalMap k a -> [(k, a)]
273toAscList = coerce (Map.toAscList :: Map k a -> [(k, a)])
233toAscList = coerce (Map.toAscList :: Map k a -> [(k, a)])
275−toDescList :: forall k a. AppendMap k a -> [(k, a)]
235+toDescList :: forall k a. MonoidalMap k a -> [(k, a)]
276toDescList = coerce (Map.toDescList :: Map k a -> [(k, a)])
236toDescList = coerce (Map.toDescList :: Map k a -> [(k, a)])
278−fromAscList :: forall k a. Eq k => [(k, a)] -> AppendMap k a
238+fromAscList :: forall k a. Eq k => [(k, a)] -> MonoidalMap k a
279fromAscList = coerce (Map.fromAscList :: [(k, a)] -> Map k a)
239fromAscList = coerce (Map.fromAscList :: [(k, a)] -> Map k a)
281−fromAscListWith :: forall k a. Eq k => (a -> a -> a) -> [(k, a)] -> AppendMap k a
241+fromAscListWith :: forall k a. Eq k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
282fromAscListWith = coerce (Map.fromAscListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
242fromAscListWith = coerce (Map.fromAscListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
284−fromAscListWithKey :: forall k a. Eq k => (k -> a -> a -> a) -> [(k, a)] -> AppendMap k a
244+fromAscListWithKey :: forall k a. Eq k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
285fromAscListWithKey = coerce (Map.fromAscListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
245fromAscListWithKey = coerce (Map.fromAscListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
287−fromDistinctAscList :: forall k a. [(k, a)] -> AppendMap k a
247+fromDistinctAscList :: forall k a. [(k, a)] -> MonoidalMap k a
288fromDistinctAscList = coerce (Map.fromDistinctAscList :: [(k, a)] -> Map k a)
248fromDistinctAscList = coerce (Map.fromDistinctAscList :: [(k, a)] -> Map k a)
290−filter :: forall k a. (a -> Bool) -> AppendMap k a -> AppendMap k a
250+filter :: forall k a. (a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
291filter = coerce (Map.filter :: (a -> Bool) -> Map k a -> Map k a)
251filter = coerce (Map.filter :: (a -> Bool) -> Map k a -> Map k a)
293−filterWithKey :: forall k a. (k -> a -> Bool) -> AppendMap k a -> AppendMap k a
253+filterWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
294filterWithKey = coerce (Map.filterWithKey :: (k -> a -> Bool) -> Map k a -> Map k a)
254filterWithKey = coerce (Map.filterWithKey :: (k -> a -> Bool) -> Map k a -> Map k a)
296−partition :: forall k a. (a -> Bool) -> AppendMap k a -> (AppendMap k a, AppendMap k a)
256+partition :: forall k a. (a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
297partition = coerce (Map.partition :: (a -> Bool) -> Map k a -> (Map k a, Map k a))
257partition = coerce (Map.partition :: (a -> Bool) -> Map k a -> (Map k a, Map k a))
299−partitionWithKey :: forall k a. (k -> a -> Bool) -> AppendMap k a -> (AppendMap k a, AppendMap k a)
259+partitionWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
300partitionWithKey = coerce (Map.partitionWithKey :: (k -> a -> Bool) -> Map k a -> (Map k a, Map k a))
260partitionWithKey = coerce (Map.partitionWithKey :: (k -> a -> Bool) -> Map k a -> (Map k a, Map k a))
302−mapMaybe :: forall k a b. (a -> Maybe b) -> AppendMap k a -> AppendMap k b
262+mapMaybe :: forall k a b. (a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
303mapMaybe = coerce (Map.mapMaybe :: (a -> Maybe b) -> Map k a -> Map k b)
263mapMaybe = coerce (Map.mapMaybe :: (a -> Maybe b) -> Map k a -> Map k b)
305−mapMaybeWithKey :: forall k a b. (k -> a -> Maybe b) -> AppendMap k a -> AppendMap k b
265+mapMaybeWithKey :: forall k a b. (k -> a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
306mapMaybeWithKey = coerce (Map.mapMaybeWithKey :: (k -> a -> Maybe b) -> Map k a -> Map k b)
266mapMaybeWithKey = coerce (Map.mapMaybeWithKey :: (k -> a -> Maybe b) -> Map k a -> Map k b)
308−mapEither :: forall k a b c. (a -> Either b c) -> AppendMap k a -> (AppendMap k b, AppendMap k c)
268+mapEither :: forall k a b c. (a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
309mapEither = coerce (Map.mapEither :: (a -> Either b c) -> Map k a -> (Map k b, Map k c))
269mapEither = coerce (Map.mapEither :: (a -> Either b c) -> Map k a -> (Map k b, Map k c))
311−mapEitherWithKey :: forall k a b c. (k -> a -> Either b c) -> AppendMap k a -> (AppendMap k b, AppendMap k c)
271+mapEitherWithKey :: forall k a b c. (k -> a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
312mapEitherWithKey = coerce (Map.mapEitherWithKey :: (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c))
272mapEitherWithKey = coerce (Map.mapEitherWithKey :: (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c))
314−split :: forall k a. Ord k => k -> AppendMap k a -> (AppendMap k a, AppendMap k a)
274+split :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
315split = coerce (Map.split :: k -> Map k a -> (Map k a, Map k a))
275split = coerce (Map.split :: k -> Map k a -> (Map k a, Map k a))
317−splitLookup :: forall k a. Ord k => k -> AppendMap k a -> (AppendMap k a, Maybe a, AppendMap k a)
277+splitLookup :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, Maybe a, MonoidalMap k a)
318splitLookup = coerce (Map.splitLookup :: k -> Map k a -> (Map k a, Maybe a, Map k a))
278splitLookup = coerce (Map.splitLookup :: k -> Map k a -> (Map k a, Maybe a, Map k a))
320−splitRoot :: forall k a. AppendMap k a -> [AppendMap k a]
280+splitRoot :: forall k a. MonoidalMap k a -> [MonoidalMap k a]
321splitRoot = coerce (Map.splitRoot :: Map k a -> [Map k a])
281splitRoot = coerce (Map.splitRoot :: Map k a -> [Map k a])
323−isSubmapOf :: forall k a. (Ord k, Eq a) => AppendMap k a -> AppendMap k a -> Bool
283+isSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
324isSubmapOf = coerce (Map.isSubmapOf :: Map k a -> Map k a -> Bool)
284isSubmapOf = coerce (Map.isSubmapOf :: Map k a -> Map k a -> Bool)
326−isSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> AppendMap k a -> AppendMap k b -> Bool
286+isSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
327isSubmapOfBy = coerce (Map.isSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
287isSubmapOfBy = coerce (Map.isSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
329−isProperSubmapOf :: forall k a. (Ord k, Eq a) => AppendMap k a -> AppendMap k a -> Bool
289+isProperSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
330isProperSubmapOf = coerce (Map.isProperSubmapOf :: Map k a -> Map k a -> Bool)
290isProperSubmapOf = coerce (Map.isProperSubmapOf :: Map k a -> Map k a -> Bool)
332−isProperSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> AppendMap k a -> AppendMap k b -> Bool
292+isProperSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
333isProperSubmapOfBy = coerce (Map.isProperSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
293isProperSubmapOfBy = coerce (Map.isProperSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
335−lookupIndex :: forall k a. Ord k => k -> AppendMap k a -> Maybe Int
295+lookupIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe Int
336lookupIndex = coerce (Map.lookupIndex :: k -> Map k a -> Maybe Int)
296lookupIndex = coerce (Map.lookupIndex :: k -> Map k a -> Maybe Int)
338−findIndex :: forall k a. Ord k => k -> AppendMap k a -> Int
298+findIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Int
339findIndex = coerce (Map.findIndex :: k -> Map k a -> Int)
299findIndex = coerce (Map.findIndex :: k -> Map k a -> Int)
341−elemAt :: forall k a. Int -> AppendMap k a -> (k, a)
301+elemAt :: forall k a. Int -> MonoidalMap k a -> (k, a)
342elemAt = coerce (Map.elemAt :: Int -> Map k a -> (k, a))
302elemAt = coerce (Map.elemAt :: Int -> Map k a -> (k, a))
344−updateAt :: forall k a. (k -> a -> Maybe a) -> Int -> AppendMap k a -> AppendMap k a
304+updateAt :: forall k a. (k -> a -> Maybe a) -> Int -> MonoidalMap k a -> MonoidalMap k a
345updateAt = coerce (Map.updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a)
305updateAt = coerce (Map.updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a)
347−deleteAt :: forall k a. Int -> AppendMap k a -> AppendMap k a
307+deleteAt :: forall k a. Int -> MonoidalMap k a -> MonoidalMap k a
348deleteAt = coerce (Map.deleteAt :: Int -> Map k a -> Map k a)
308deleteAt = coerce (Map.deleteAt :: Int -> Map k a -> Map k a)
350−findMin :: forall k a. AppendMap k a -> (k, a)
310+findMin :: forall k a. MonoidalMap k a -> (k, a)
351findMin = coerce (Map.findMin :: Map k a -> (k, a))
311findMin = coerce (Map.findMin :: Map k a -> (k, a))
353−findMax :: forall k a. AppendMap k a -> (k, a)
313+findMax :: forall k a. MonoidalMap k a -> (k, a)
354findMax = coerce (Map.findMax :: Map k a -> (k, a))
314findMax = coerce (Map.findMax :: Map k a -> (k, a))
356−deleteMin :: forall k a. AppendMap k a -> AppendMap k a
316+deleteMin :: forall k a. MonoidalMap k a -> MonoidalMap k a
357deleteMin = coerce (Map.deleteMin :: Map k a -> Map k a)
317deleteMin = coerce (Map.deleteMin :: Map k a -> Map k a)
359−deleteMax :: forall k a. AppendMap k a -> AppendMap k a
319+deleteMax :: forall k a. MonoidalMap k a -> MonoidalMap k a
360deleteMax = coerce (Map.deleteMax :: Map k a -> Map k a)
320deleteMax = coerce (Map.deleteMax :: Map k a -> Map k a)
362−deleteFindMin :: forall k a. AppendMap k a -> ((k, a), AppendMap k a)
322+deleteFindMin :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
363deleteFindMin = coerce (Map.deleteFindMin :: Map k a -> ((k, a), Map k a))
323deleteFindMin = coerce (Map.deleteFindMin :: Map k a -> ((k, a), Map k a))
365−deleteFindMax :: forall k a. AppendMap k a -> ((k, a), AppendMap k a)
325+deleteFindMax :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
366deleteFindMax = coerce (Map.deleteFindMax :: Map k a -> ((k, a), Map k a))
326deleteFindMax = coerce (Map.deleteFindMax :: Map k a -> ((k, a), Map k a))
368−updateMin :: forall k a. (a -> Maybe a) -> AppendMap k a -> AppendMap k a
328+updateMin :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
369updateMin = coerce (Map.updateMin :: (a -> Maybe a) -> Map k a -> Map k a)
329updateMin = coerce (Map.updateMin :: (a -> Maybe a) -> Map k a -> Map k a)
371−updateMax :: forall k a. (a -> Maybe a) -> AppendMap k a -> AppendMap k a
331+updateMax :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
372updateMax = coerce (Map.updateMax :: (a -> Maybe a) -> Map k a -> Map k a)
332updateMax = coerce (Map.updateMax :: (a -> Maybe a) -> Map k a -> Map k a)
374−updateMinWithKey :: forall k a. (k -> a -> Maybe a) -> AppendMap k a -> AppendMap k a
334+updateMinWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
375updateMinWithKey = coerce (Map.updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
335updateMinWithKey = coerce (Map.updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
377−updateMaxWithKey :: forall k a. (k -> a -> Maybe a) -> AppendMap k a -> AppendMap k a
337+updateMaxWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
378updateMaxWithKey = coerce (Map.updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
338updateMaxWithKey = coerce (Map.updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
380−minView :: forall k a. AppendMap k a -> Maybe (a, AppendMap k a)
340+minView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
381minView = coerce (Map.minView :: Map k a -> Maybe (a, Map k a))
341minView = coerce (Map.minView :: Map k a -> Maybe (a, Map k a))
383−maxView :: forall k a. AppendMap k a -> Maybe (a, AppendMap k a)
343+maxView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
384maxView = coerce (Map.maxView :: Map k a -> Maybe (a, Map k a))
344maxView = coerce (Map.maxView :: Map k a -> Maybe (a, Map k a))
386−minViewWithKey :: forall k a. AppendMap k a -> Maybe ((k, a), AppendMap k a)
346+minViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
387minViewWithKey = coerce (Map.minViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
347minViewWithKey = coerce (Map.minViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
389−maxViewWithKey :: forall k a. AppendMap k a -> Maybe ((k, a), AppendMap k a)
349+maxViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
390maxViewWithKey = coerce (Map.maxViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
350maxViewWithKey = coerce (Map.maxViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
392−showTree :: forall k a. (Show k, Show a) => AppendMap k a -> String
352+showTree :: forall k a. (Show k, Show a) => MonoidalMap k a -> String
393showTree = coerce (Map.showTree :: (Show k, Show a) => Map k a -> String)
353showTree = coerce (Map.showTree :: (Show k, Show a) => Map k a -> String)
395−showTreeWith :: forall k a. (k -> a -> String) -> Bool -> Bool -> AppendMap k a -> String
355+showTreeWith :: forall k a. (k -> a -> String) -> Bool -> Bool -> MonoidalMap k a -> String
396showTreeWith = coerce (Map.showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String)
356showTreeWith = coerce (Map.showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String)
398−valid :: forall k a. Ord k => AppendMap k a -> Bool
358+valid :: forall k a. Ord k => MonoidalMap k a -> Bool
399valid = coerce (Map.valid :: Ord k => Map k a -> Bool)
359valid = coerce (Map.valid :: Ord k => Map k a -> Bool)
401−instance Default (AppendMap k a) where
361+instance Default (MonoidalMap k a) where
402 def = empty
362 def = empty
404−instance AppendMap k' v' ~ t => Rewrapped (AppendMap k a) t
406−instance Wrapped (AppendMap k a) where
407− type Unwrapped (AppendMap k a) = Map k a
408− _Wrapped' = iso (\(AppendMap m) -> m) AppendMap