on develop help sign in
Make Data.AppendMap use monoidal-containers
e4a4e75Ryan Trinkle
default.nix+3−2
@@ -5,7 +5,8 @@
5, semigroupoids , semigroups, split, stdenv, stm, syb
5, semigroupoids , semigroups, split, stdenv, stm, syb
6, template-haskell , these, time, transformers
6, template-haskell , these, time, transformers
7, transformers-compat, unbounded-delays, prim-uniq
7, transformers-compat, unbounded-delays, prim-uniq
8−, data-default , filepath, directory, filemanip, ghcjs-base
8+, data-default, filepath, directory, filemanip, ghcjs-base
9+, monoidal-containers
9, useTemplateHaskell ? true
10, useTemplateHaskell ? true
10}:
11}:
11mkDerivation {
12mkDerivation {
@@ -20,7 +21,7 @@ mkDerivation {
20 transformers-compat prim-uniq
21 transformers-compat prim-uniq
21 base bifunctors containers deepseq dependent-map dependent-sum
22 base bifunctors containers deepseq dependent-map dependent-sum
22 mtl ref-tf split transformers data-default
23 mtl ref-tf split transformers data-default
23− random time unbounded-delays
24+ random time unbounded-delays monoidal-containers
24 ] ++ (if ghc.isGhcjs or false then [
25 ] ++ (if ghc.isGhcjs or false then [
25 ghcjs-base
26 ghcjs-base
26 ] else []) ++ (if !useTemplateHaskell then [] else [
27 ] else []) ++ (if !useTemplateHaskell then [] else [
reflex.cabal+6−4
@@ -46,6 +46,7 @@ library
46 exception-transformers == 0.4.*,
46 exception-transformers == 0.4.*,
47 lens >= 4.7 && < 5,
47 lens >= 4.7 && < 5,
48 monad-control >= 1.0.1 && < 1.1,
48 monad-control >= 1.0.1 && < 1.1,
49+ monoidal-containers >= 0.3.0.2 && < 0.4,
49 mtl >= 2.1 && < 2.3,
50 mtl >= 2.1 && < 2.3,
50 prim-uniq >= 0.1.0.1 && < 0.2,
51 prim-uniq >= 0.1.0.1 && < 0.2,
51 primitive >= 0.5 && < 0.7,
52 primitive >= 0.5 && < 0.7,
@@ -217,14 +218,15 @@ test-suite QueryT
217 hs-source-dirs: test
218 hs-source-dirs: test
218 build-depends: base
219 build-depends: base
219 , containers
220 , containers
220− , dependent-sum
221 , dependent-map
221 , dependent-map
222+ , dependent-sum
222 , lens
223 , lens
224+ , monoidal-containers
225+ , ref-tf
226+ , reflex
227+ , semigroups
223 , these
228 , these
224 , transformers
229 , transformers
225− , semigroups
226− , reflex
227− , ref-tf
228 other-modules: Test.Run
230 other-modules: Test.Run
229
231
230test-suite GC-Semantics
232test-suite GC-Semantics
src/Data/AppendMap.hs+121−167
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
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
12--
15--
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
21+ ) where
16
22
17import Prelude hiding (map)
23import Prelude hiding (map)
18
24
19−import Control.Lens
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)
27−import Data.Typeable
28−import GHC.Generics (Generic)
29import Reflex.Class (FunctorMaybe (..))
33import Reflex.Class (FunctorMaybe (..))
30import Reflex.Patch (Additive, Group (..))
34import Reflex.Patch (Additive, Group (..))
31
35
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
34
38
35−type instance (Index (AppendMap k m)) = k
39+deriving instance Ord k => Align (MonoidalMap k)
36−type instance (IxValue (AppendMap k m)) = m
37
40
38−instance Ord k => Ixed (AppendMap k m) where
39− ix i = _Wrapped . ix i
40−
41−instance Ord k => At (AppendMap k m) where
42− at i = _Wrapped . at i
43−
44−instance FunctorMaybe (AppendMap k) where
41+instance FunctorMaybe (MonoidalMap k) where
45 fmapMaybe = mapMaybe
42 fmapMaybe = mapMaybe
46
43
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
54
51
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
63
60
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
67−
64+#endif
68−instance FoldableWithIndex k (AppendMap k) where
69− ifolded = _Wrapped . ifolded
70−
71−instance TraversableWithIndex k (AppendMap k) where
72− itraverse = itraverseOf itraversed
73− itraversed = _Wrapped . itraversed
74
65
75−instance (Ord k, Semigroup m) => Semigroup (AppendMap k m) where
76− (AppendMap m0) <> (AppendMap m1) = AppendMap $ Map.unionWith (<>) m0 m1
77−
78−instance (Ord k, Semigroup m) => Monoid (AppendMap k m) where
79− mempty = empty
80− mappend = (<>)
81−
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
84
68
85−instance (Ord k, Additive q) => Additive (AppendMap k q)
69+instance (Ord k, Additive q) => Additive (MonoidalMap k q)
86
70
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)
89infixl 9 !
73infixl 9 !
90
74
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
94
78
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)
97
81
98−size :: forall k a. AppendMap k a -> Int
99−size = coerce (Map.size :: Map k a -> Int)
100−
101−member :: forall k a. Ord k => k -> AppendMap k a -> Bool
102−member = coerce (Map.member :: k -> Map k a -> Bool)
103−
104−notMember :: forall k a. Ord k => k -> AppendMap k a -> Bool
105−notMember = coerce (Map.notMember :: k -> Map k a -> Bool)
106−
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)
109
84
110−findWithDefault :: forall k a. Ord k => a -> k -> AppendMap k a -> a
111−findWithDefault = coerce (Map.findWithDefault :: a -> k -> Map k a -> a)
112−
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))
115
87
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))
118
90
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))
121
93
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))
124
96
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)
127
99
128−singleton :: forall k a. k -> a -> AppendMap k a
129−singleton = coerce (Map.singleton :: k -> a -> Map k a)
130−
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)
133
102
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)
136
105
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)
139
108
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))
142
111
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)
145
114
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)
148
117
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)
151
120
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)
154
123
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)
157
126
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))
160
129
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)
163
132
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)
166
135
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)
169
138
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)
172
141
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 = (\\)
175
144
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)
178
147
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)
181
150
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)
184
153
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)
187
156
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)
190
159
191−map :: (a -> b) -> AppendMap k a -> AppendMap k b
160+map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
192map = fmap
161map = fmap
193
162
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
196
165
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
199
168
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))
202
171
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))
205
174
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))
208
177
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)
211
180
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)
214
183
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)
217
186
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)
220
189
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)
223
192
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)
226
195
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)
229
198
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)
232
201
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)
235
204
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)
238
207
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)
241
210
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)
244
213
245−elems :: forall k a. AppendMap k a -> [a]
246−elems = coerce (Map.elems :: Map k a -> [a])
247−
248−keys :: forall k a. AppendMap k a -> [k]
249−keys = coerce (Map.keys :: Map k a -> [k])
250−
251−assocs :: forall k a. AppendMap k a -> [(k, a)]
252−assocs = coerce (Map.assocs :: Map k a -> [(k, a)])
253−
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)
256
216
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)
259
219
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)])
262
222
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)
265
225
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)
268
228
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)
271
231
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)])
274
234
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)])
277
237
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)
280
240
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)
283
243
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)
286
246
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)
289
249
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)
292
252
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)
295
255
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))
298
258
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))
301
261
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)
304
264
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)
307
267
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))
310
270
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))
313
273
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))
316
276
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))
319
279
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])
322
282
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)
325
285
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)
328
288
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)
331
291
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)
334
294
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)
337
297
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)
340
300
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))
343
303
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)
346
306
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)
349
309
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))
352
312
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))
355
315
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)
358
318
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)
361
321
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))
364
324
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))
367
327
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)
370
330
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)
373
333
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)
376
336
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)
379
339
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))
382
342
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))
385
345
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))
388
348
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))
391
351
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)
394
354
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)
397
357
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)
400
360
401−instance Default (AppendMap k a) where
361+instance Default (MonoidalMap k a) where
402 def = empty
362 def = empty
403−
404−instance AppendMap k' v' ~ t => Rewrapped (AppendMap k a) t
405−
406−instance Wrapped (AppendMap k a) where
407− type Unwrapped (AppendMap k a) = Map k a
408− _Wrapped' = iso (\(AppendMap m) -> m) AppendMap
test/QueryT.hs+3−2
@@ -8,11 +8,12 @@
8import Control.Lens
8import Control.Lens
9import Control.Monad.Fix
9import Control.Monad.Fix
10import Data.Align
10import Data.Align
11−import Data.AppendMap (AppendMap)
11+import Data.AppendMap () -- for the Align instance
12import qualified Data.AppendMap as AMap
12import qualified Data.AppendMap as AMap
13import Data.Functor.Misc
13import Data.Functor.Misc
14import Data.Map (Map)
14import Data.Map (Map)
15import qualified Data.Map as Map
15import qualified Data.Map as Map
16+import Data.Map.Monoidal (MonoidalMap)
16import Data.Semigroup
17import Data.Semigroup
17import Data.These
18import Data.These
18
19
@@ -31,7 +32,7 @@ instance (Ord k, Query a, Eq (QueryResult a)) => Query (Selector k a) where
31 type QueryResult (Selector k a) = Selector k (QueryResult a)
32 type QueryResult (Selector k a) = Selector k (QueryResult a)
32 crop q r = undefined
33 crop q r = undefined
33
34
34−newtype Selector k a = Selector { unSelector :: AppendMap k a }
35+newtype Selector k a = Selector { unSelector :: MonoidalMap k a }
35 deriving (Show, Read, Eq, Ord, Functor)
36 deriving (Show, Read, Eq, Ord, Functor)
36
37
37instance (Ord k, Eq a, Monoid a) => Semigroup (Selector k a) where
38instance (Ord k, Eq a, Monoid a) => Semigroup (Selector k a) where