@@ -21,7 +21,7 @@ module Data.AppendMap
2121 , module Data.Map.Monoidal
2222 ) where
2323
24−import Prelude hiding (map)
24+import Prelude hiding (map, null)
2525
2626import Data.Align
2727import Data.Coerce
@@ -53,7 +53,7 @@ instance FunctorMaybe (MonoidalMap k) where
5353nonEmptyDelete :: Ord k => k -> MonoidalMap k a -> Maybe (MonoidalMap k a)
5454nonEmptyDelete k vs =
5555 let deleted = delete k vs
56− in if Data.AppendMap.null deleted
56+ in if null deleted
5757 then Nothing
5858 else Just deleted
5959
@@ -62,309 +62,21 @@ mapMaybeNoNull :: (a -> Maybe b)
6262 -> Maybe (MonoidalMap token b)
6363mapMaybeNoNull f as =
6464 let bs = fmapMaybe f as
65− in if Data.AppendMap.null bs
65+ in if null bs
6666 then Nothing
6767 else Just bs
6868
69−#if !MIN_VERSION_monoidal_containers(0,3,1)
70−instance (Ord k, Semigroup v) => Semigroup (MonoidalMap k v) where
71− MonoidalMap a <> MonoidalMap b = MonoidalMap $ Map.unionWith (<>) a b
72−#endif
73−
69+-- TODO: Move instances to `Reflex.Patch`
7470instance (Ord k, Group q) => Group (MonoidalMap k q) where
7571 negateG = map negateG
7672
7773instance (Ord k, Additive q) => Additive (MonoidalMap k q)
7874
79−(!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
80−(!) = coerce ((Map.!) :: Map k a -> k -> a)
81−infixl 9 !
82−
83−(\\) :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
84−(\\) = coerce ((Map.\\) :: Map k a -> Map k b -> Map k a)
85−infixl 9 {-"-} \\ {-"-} --These comments prevent the C preprocssor from complaining
86−
87−null :: forall k a. MonoidalMap k a -> Bool
88−null = coerce (Map.null :: Map k a -> Bool)
89−
90−lookup :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe a
91−lookup = coerce (Map.lookup :: k -> Map k a -> Maybe a)
92−
93−lookupLT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
94−lookupLT = coerce (Map.lookupLT :: k -> Map k a -> Maybe (k,a))
95−
96−lookupGT :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
97−lookupGT = coerce (Map.lookupGT :: k -> Map k a -> Maybe (k,a))
98−
99−lookupLE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
100−lookupLE = coerce (Map.lookupLE :: k -> Map k a -> Maybe (k,a))
101−
102−lookupGE :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe (k, a)
103−lookupGE = coerce (Map.lookupGE :: k -> Map k a -> Maybe (k,a))
104−
105−empty :: forall k a. MonoidalMap k a
106−empty = coerce (Map.empty :: Map k a)
107−
108−insert :: forall k a. Ord k => k -> a -> MonoidalMap k a -> MonoidalMap k a
109−insert = coerce (Map.insert :: k -> a -> Map k a -> Map k a)
110−
111−insertWith :: forall k a. Ord k => (a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
112−insertWith = coerce (Map.insertWith :: (a -> a -> a) -> k -> a -> Map k a -> Map k a)
113−
114−insertWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> MonoidalMap k a
115−insertWithKey = coerce (Map.insertWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a)
116−
117−insertLookupWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> k -> a -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
118−insertLookupWithKey = coerce (Map.insertLookupWithKey :: (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a))
119−
120−delete :: forall k a. Ord k => k -> MonoidalMap k a -> MonoidalMap k a
121−delete = coerce (Map.delete :: k -> Map k a -> Map k a)
122−
123−adjust :: forall k a. Ord k => (a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
124−adjust = coerce (Map.adjust :: (a -> a) -> k -> Map k a -> Map k a)
125−
126−adjustWithKey :: forall k a. Ord k => (k -> a -> a) -> k -> MonoidalMap k a -> MonoidalMap k a
127−adjustWithKey = coerce (Map.adjustWithKey :: (k -> a -> a) -> k -> Map k a -> Map k a)
128−
129−update :: forall k a. Ord k => (a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
130−update = coerce (Map.update :: (a -> Maybe a) -> k -> Map k a -> Map k a)
131−
132−updateWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
133−updateWithKey = coerce (Map.updateWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> Map k a)
134−
135−updateLookupWithKey :: forall k a. Ord k => (k -> a -> Maybe a) -> k -> MonoidalMap k a -> (Maybe a, MonoidalMap k a)
136−updateLookupWithKey = coerce (Map.updateLookupWithKey :: (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a))
137−
138−alter :: forall k a. Ord k => (Maybe a -> Maybe a) -> k -> MonoidalMap k a -> MonoidalMap k a
139−alter = coerce (Map.alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a)
140−
141−unionWith :: forall k a. Ord k => (a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
142−unionWith = coerce (Map.unionWith :: (a -> a -> a) -> Map k a -> Map k a -> Map k a)
143−
144−unionWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> MonoidalMap k a -> MonoidalMap k a -> MonoidalMap k a
145−unionWithKey = coerce (Map.unionWithKey :: (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a)
146−
147−unionsWith :: forall k a. Ord k => (a -> a -> a) -> [MonoidalMap k a] -> MonoidalMap k a
148−unionsWith = coerce (Map.unionsWith :: (a -> a -> a) -> [Map k a] -> Map k a)
149−
150−difference :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
151−difference = (\\)
152−
153−differenceWith :: forall k a b. Ord k => (a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
154−differenceWith = coerce (Map.differenceWith :: (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
155−
156−differenceWithKey :: forall k a b. Ord k => (k -> a -> b -> Maybe a) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
157−differenceWithKey = coerce (Map.differenceWithKey :: (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a)
158−
159−intersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
160−intersectionWith = coerce (Map.intersectionWith :: (a -> b -> c) -> Map k a -> Map k b -> Map k c)
161−
162−intersectionWithKey :: forall k a b c. Ord k => (k -> a -> b -> c) -> MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k c
163−intersectionWithKey = coerce (Map.intersectionWithKey :: (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c)
164−
165−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
166−mergeWithKey = 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)
167−
168−map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
169−map = fmap
170−
171−mapWithKey :: (k -> a -> b) -> MonoidalMap k a -> MonoidalMap k b
172−mapWithKey f (MonoidalMap m) = MonoidalMap $ Map.mapWithKey f m
173−
174−traverseWithKey :: Applicative t => (k -> a -> t b) -> MonoidalMap k a -> t (MonoidalMap k b)
175−traverseWithKey f (MonoidalMap m) = MonoidalMap <$> Map.traverseWithKey f m
176−
177−mapAccum :: forall k a b c. (a -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
178−mapAccum = coerce (Map.mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
179−
180−mapAccumWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
181−mapAccumWithKey = coerce (Map.mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
182−
183−mapAccumRWithKey :: forall k a b c. (a -> k -> b -> (a, c)) -> a -> MonoidalMap k b -> (a, MonoidalMap k c)
184−mapAccumRWithKey = coerce (Map.mapAccumRWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c))
185−
186−mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
187−mapKeys = coerce (Map.mapKeys :: (k1 -> k2) -> Map k1 a -> Map k2 a)
188−
189−mapKeysWith :: forall k1 k2 a. Ord k2 => (a -> a -> a) -> (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
190−mapKeysWith = coerce (Map.mapKeysWith :: (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a)
191−
192−mapKeysMonotonic :: forall k1 k2 a. (k1 -> k2) -> MonoidalMap k1 a -> MonoidalMap k2 a
193−mapKeysMonotonic = coerce (Map.mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a)
194−
195−foldr :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
196−foldr = coerce (Map.foldr :: (a -> b -> b) -> b -> Map k a -> b)
197−
198−foldl :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
199−foldl = coerce (Map.foldl :: (a -> b -> a) -> a -> Map k b -> a)
200−
201−foldrWithKey :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
202−foldrWithKey = coerce (Map.foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b)
203−
204−foldlWithKey :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
205−foldlWithKey = coerce (Map.foldlWithKey :: (a -> k -> b -> a) -> a -> Map k b -> a)
206−
207−foldMapWithKey :: forall k a m. Monoid m => (k -> a -> m) -> MonoidalMap k a -> m
208−foldMapWithKey = coerce (Map.foldMapWithKey :: (k -> a -> m) -> Map k a -> m)
209−
210−foldr' :: forall k a b. (a -> b -> b) -> b -> MonoidalMap k a -> b
211−foldr' = coerce (Map.foldr' :: (a -> b -> b) -> b -> Map k a -> b)
212−
213−foldl' :: forall k a b. (a -> b -> a) -> a -> MonoidalMap k b -> a
214−foldl' = coerce (Map.foldl' :: (a -> b -> a) -> a -> Map k b -> a)
215−
216−foldrWithKey' :: forall k a b. (k -> a -> b -> b) -> b -> MonoidalMap k a -> b
217−foldrWithKey' = coerce (Map.foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b)
218−
219−foldlWithKey' :: forall k a b. (a -> k -> b -> a) -> a -> MonoidalMap k b -> a
220−foldlWithKey' = coerce (Map.foldlWithKey' :: (a -> k -> b -> a) -> a -> Map k b -> a)
221−
222−keysSet :: forall k a. MonoidalMap k a -> Set k
223−keysSet = coerce (Map.keysSet :: Map k a -> Set k)
224−
225−fromSet :: forall k a. (k -> a) -> Set k -> MonoidalMap k a
226−fromSet = coerce (Map.fromSet :: (k -> a) -> Set k -> Map k a)
227−
228−toList :: forall k a. MonoidalMap k a -> [(k, a)]
229−toList = coerce (Map.toList :: Map k a -> [(k, a)])
230−
231−fromList :: forall k a. Ord k => [(k, a)] -> MonoidalMap k a
232−fromList = coerce (Map.fromList :: [(k, a)] -> Map k a)
233−
234−fromListWith :: forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
235−fromListWith = coerce (Map.fromListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
236−
237−fromListWithKey :: forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
238−fromListWithKey = coerce (Map.fromListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
239−
240−toAscList :: forall k a. MonoidalMap k a -> [(k, a)]
241−toAscList = coerce (Map.toAscList :: Map k a -> [(k, a)])
242−
243−toDescList :: forall k a. MonoidalMap k a -> [(k, a)]
244−toDescList = coerce (Map.toDescList :: Map k a -> [(k, a)])
245−
246−fromAscList :: forall k a. Eq k => [(k, a)] -> MonoidalMap k a
247−fromAscList = coerce (Map.fromAscList :: [(k, a)] -> Map k a)
248−
249−fromAscListWith :: forall k a. Eq k => (a -> a -> a) -> [(k, a)] -> MonoidalMap k a
250−fromAscListWith = coerce (Map.fromAscListWith :: (a -> a -> a) -> [(k, a)] -> Map k a)
251−
252−fromAscListWithKey :: forall k a. Eq k => (k -> a -> a -> a) -> [(k, a)] -> MonoidalMap k a
253−fromAscListWithKey = coerce (Map.fromAscListWithKey :: (k -> a -> a -> a) -> [(k, a)] -> Map k a)
254−
255−fromDistinctAscList :: forall k a. [(k, a)] -> MonoidalMap k a
256−fromDistinctAscList = coerce (Map.fromDistinctAscList :: [(k, a)] -> Map k a)
257−
258−filter :: forall k a. (a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
259−filter = coerce (Map.filter :: (a -> Bool) -> Map k a -> Map k a)
260−
261−filterWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> MonoidalMap k a
262−filterWithKey = coerce (Map.filterWithKey :: (k -> a -> Bool) -> Map k a -> Map k a)
263−
264−partition :: forall k a. (a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
265−partition = coerce (Map.partition :: (a -> Bool) -> Map k a -> (Map k a, Map k a))
266−
267−partitionWithKey :: forall k a. (k -> a -> Bool) -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
268−partitionWithKey = coerce (Map.partitionWithKey :: (k -> a -> Bool) -> Map k a -> (Map k a, Map k a))
269−
270−mapMaybe :: forall k a b. (a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
271−mapMaybe = coerce (Map.mapMaybe :: (a -> Maybe b) -> Map k a -> Map k b)
272−
273−mapMaybeWithKey :: forall k a b. (k -> a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b
274−mapMaybeWithKey = coerce (Map.mapMaybeWithKey :: (k -> a -> Maybe b) -> Map k a -> Map k b)
275−
276−mapEither :: forall k a b c. (a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
277−mapEither = coerce (Map.mapEither :: (a -> Either b c) -> Map k a -> (Map k b, Map k c))
278−
279−mapEitherWithKey :: forall k a b c. (k -> a -> Either b c) -> MonoidalMap k a -> (MonoidalMap k b, MonoidalMap k c)
280−mapEitherWithKey = coerce (Map.mapEitherWithKey :: (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c))
281−
282−split :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, MonoidalMap k a)
283−split = coerce (Map.split :: k -> Map k a -> (Map k a, Map k a))
284−
285−splitLookup :: forall k a. Ord k => k -> MonoidalMap k a -> (MonoidalMap k a, Maybe a, MonoidalMap k a)
286−splitLookup = coerce (Map.splitLookup :: k -> Map k a -> (Map k a, Maybe a, Map k a))
287−
288−splitRoot :: forall k a. MonoidalMap k a -> [MonoidalMap k a]
289−splitRoot = coerce (Map.splitRoot :: Map k a -> [Map k a])
290−
291−isSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
292−isSubmapOf = coerce (Map.isSubmapOf :: Map k a -> Map k a -> Bool)
293−
294−isSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
295−isSubmapOfBy = coerce (Map.isSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
296−
297−isProperSubmapOf :: forall k a. (Ord k, Eq a) => MonoidalMap k a -> MonoidalMap k a -> Bool
298−isProperSubmapOf = coerce (Map.isProperSubmapOf :: Map k a -> Map k a -> Bool)
299−
300−isProperSubmapOfBy :: forall k a b. Ord k => (a -> b -> Bool) -> MonoidalMap k a -> MonoidalMap k b -> Bool
301−isProperSubmapOfBy = coerce (Map.isProperSubmapOfBy :: (a -> b -> Bool) -> Map k a -> Map k b -> Bool)
302−
303−lookupIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe Int
304−lookupIndex = coerce (Map.lookupIndex :: k -> Map k a -> Maybe Int)
305−
306−findIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Int
307−findIndex = coerce (Map.findIndex :: k -> Map k a -> Int)
308−
309−elemAt :: forall k a. Int -> MonoidalMap k a -> (k, a)
310−elemAt = coerce (Map.elemAt :: Int -> Map k a -> (k, a))
311−
312−updateAt :: forall k a. (k -> a -> Maybe a) -> Int -> MonoidalMap k a -> MonoidalMap k a
313−updateAt = coerce (Map.updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a)
314−
315−deleteAt :: forall k a. Int -> MonoidalMap k a -> MonoidalMap k a
316−deleteAt = coerce (Map.deleteAt :: Int -> Map k a -> Map k a)
317−
318−findMin :: forall k a. MonoidalMap k a -> (k, a)
319−findMin = coerce (Map.findMin :: Map k a -> (k, a))
320−
321−findMax :: forall k a. MonoidalMap k a -> (k, a)
322−findMax = coerce (Map.findMax :: Map k a -> (k, a))
323−
324−deleteMin :: forall k a. MonoidalMap k a -> MonoidalMap k a
325−deleteMin = coerce (Map.deleteMin :: Map k a -> Map k a)
326−
327−deleteMax :: forall k a. MonoidalMap k a -> MonoidalMap k a
328−deleteMax = coerce (Map.deleteMax :: Map k a -> Map k a)
329−
330−deleteFindMin :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
331−deleteFindMin = coerce (Map.deleteFindMin :: Map k a -> ((k, a), Map k a))
332−
333−deleteFindMax :: forall k a. MonoidalMap k a -> ((k, a), MonoidalMap k a)
334−deleteFindMax = coerce (Map.deleteFindMax :: Map k a -> ((k, a), Map k a))
335−
336−updateMin :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
337−updateMin = coerce (Map.updateMin :: (a -> Maybe a) -> Map k a -> Map k a)
338−
339−updateMax :: forall k a. (a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
340−updateMax = coerce (Map.updateMax :: (a -> Maybe a) -> Map k a -> Map k a)
341−
342−updateMinWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
343−updateMinWithKey = coerce (Map.updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
344−
345−updateMaxWithKey :: forall k a. (k -> a -> Maybe a) -> MonoidalMap k a -> MonoidalMap k a
346−updateMaxWithKey = coerce (Map.updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a)
347−
348−minView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
349−minView = coerce (Map.minView :: Map k a -> Maybe (a, Map k a))
350−
351−maxView :: forall k a. MonoidalMap k a -> Maybe (a, MonoidalMap k a)
352−maxView = coerce (Map.maxView :: Map k a -> Maybe (a, Map k a))
353−
354−minViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
355−minViewWithKey = coerce (Map.minViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
356−
357−maxViewWithKey :: forall k a. MonoidalMap k a -> Maybe ((k, a), MonoidalMap k a)
358−maxViewWithKey = coerce (Map.maxViewWithKey :: Map k a -> Maybe ((k, a), Map k a))
359−
36075showTree :: forall k a. (Show k, Show a) => MonoidalMap k a -> String
36176showTree = coerce (Map.showTree :: Map k a -> String)
36277
36378showTreeWith :: forall k a. (k -> a -> String) -> Bool -> Bool -> MonoidalMap k a -> String
36479showTreeWith = coerce (Map.showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String)
36580
366−valid :: forall k a. Ord k => MonoidalMap k a -> Bool
367−valid = coerce (Map.valid :: Map k a -> Bool)
368−
36981instance Default (MonoidalMap k a) where
37082 def = empty