@@ -21,7 +21,7 @@ module Data.AppendMap
21 , module Data.Map.Monoidal
21 , module Data.Map.Monoidal
24−import Prelude hiding (map)
24+import Prelude hiding (map, null)
26import Data.Align
26import Data.Align
27import Data.Coerce
27import Data.Coerce
@@ -53,7 +53,7 @@ instance FunctorMaybe (MonoidalMap k) where
53nonEmptyDelete :: Ord k => k -> MonoidalMap k a -> Maybe (MonoidalMap k a)
53nonEmptyDelete :: Ord k => k -> MonoidalMap k a -> Maybe (MonoidalMap k a)
54nonEmptyDelete k vs =
54nonEmptyDelete k vs =
55 let deleted = delete k vs
55 let deleted = delete k vs
56− in if Data.AppendMap.null deleted
56+ in if null deleted
57 then Nothing
57 then Nothing
58 else Just deleted
58 else Just deleted
@@ -62,309 +62,21 @@ mapMaybeNoNull :: (a -> Maybe b)
62 -> Maybe (MonoidalMap token b)
62 -> Maybe (MonoidalMap token b)
63mapMaybeNoNull f as =
63mapMaybeNoNull f as =
64 let bs = fmapMaybe f as
64 let bs = fmapMaybe f as
65− in if Data.AppendMap.null bs
65+ in if null bs
66 then Nothing
66 then Nothing
67 else Just bs
67 else Just bs
69−#if !MIN_VERSION_monoidal_containers(0,3,1)
69+-- TODO: Move instances to `Reflex.Patch`
70−instance (Ord k, Semigroup v) => Semigroup (MonoidalMap k v) where
71− MonoidalMap a <> MonoidalMap b = MonoidalMap $ Map.unionWith (<>) a b
74instance (Ord k, Group q) => Group (MonoidalMap k q) where
70instance (Ord k, Group q) => Group (MonoidalMap k q) where
75 negateG = map negateG
71 negateG = map negateG
77instance (Ord k, Additive q) => Additive (MonoidalMap k q)
73instance (Ord k, Additive q) => Additive (MonoidalMap k q)
79−(!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
80−(!) = coerce ((Map.!) :: Map k a -> k -> a)
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
87−null :: forall k a. MonoidalMap k a -> Bool
88−null = coerce (Map.null :: Map k a -> Bool)
90−lookup :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe a
91−lookup = coerce (Map.lookup :: k -> Map k a -> Maybe a)
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))
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))
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))
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))
105−empty :: forall k a. MonoidalMap k a
106−empty = coerce (Map.empty :: Map k a)
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)
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)
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)
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))
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)
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)
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)
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)
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)
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))
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)
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)
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)
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)
150−difference :: forall k a b. Ord k => MonoidalMap k a -> MonoidalMap k b -> MonoidalMap k a
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)
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)
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)
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)
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)
168−map :: (a -> b) -> MonoidalMap k a -> MonoidalMap k b
171−mapWithKey :: (k -> a -> b) -> MonoidalMap k a -> MonoidalMap k b
172−mapWithKey f (MonoidalMap m) = MonoidalMap $ Map.mapWithKey f m
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
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))
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))
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
222−keysSet :: forall k a. MonoidalMap k a -> Set k
223−keysSet = coerce (Map.keysSet :: Map k a -> Set k)
225−fromSet :: forall k a. (k -> a) -> Set k -> MonoidalMap k a
226−fromSet = coerce (Map.fromSet :: (k -> a) -> Set k -> Map k a)
228−toList :: forall k a. MonoidalMap k a -> [(k, a)]
229−toList = coerce (Map.toList :: Map k a -> [(k, a)])
231−fromList :: forall k a. Ord k => [(k, a)] -> MonoidalMap k a
232−fromList = coerce (Map.fromList :: [(k, a)] -> Map k a)
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)
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)
240−toAscList :: forall k a. MonoidalMap k a -> [(k, a)]
241−toAscList = coerce (Map.toAscList :: Map k a -> [(k, a)])
243−toDescList :: forall k a. MonoidalMap k a -> [(k, a)]
244−toDescList = coerce (Map.toDescList :: Map k a -> [(k, a)])
246−fromAscList :: forall k a. Eq k => [(k, a)] -> MonoidalMap k a
247−fromAscList = coerce (Map.fromAscList :: [(k, a)] -> Map k a)
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)
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)
255−fromDistinctAscList :: forall k a. [(k, a)] -> MonoidalMap k a
256−fromDistinctAscList = coerce (Map.fromDistinctAscList :: [(k, a)] -> Map k a)
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)
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)
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))
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))
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)
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)
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))
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))
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))
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))
288−splitRoot :: forall k a. MonoidalMap k a -> [MonoidalMap k a]
289−splitRoot = coerce (Map.splitRoot :: Map k a -> [Map k a])
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)
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)
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)
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)
303−lookupIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Maybe Int
304−lookupIndex = coerce (Map.lookupIndex :: k -> Map k a -> Maybe Int)
306−findIndex :: forall k a. Ord k => k -> MonoidalMap k a -> Int
307−findIndex = coerce (Map.findIndex :: k -> Map k a -> Int)
309−elemAt :: forall k a. Int -> MonoidalMap k a -> (k, a)
310−elemAt = coerce (Map.elemAt :: Int -> Map k a -> (k, a))
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)
315−deleteAt :: forall k a. Int -> MonoidalMap k a -> MonoidalMap k a
316−deleteAt = coerce (Map.deleteAt :: Int -> Map k a -> Map k a)
318−findMin :: forall k a. MonoidalMap k a -> (k, a)
319−findMin = coerce (Map.findMin :: Map k a -> (k, a))
321−findMax :: forall k a. MonoidalMap k a -> (k, a)
322−findMax = coerce (Map.findMax :: Map k a -> (k, a))
324−deleteMin :: forall k a. MonoidalMap k a -> MonoidalMap k a
325−deleteMin = coerce (Map.deleteMin :: Map k a -> Map k a)
327−deleteMax :: forall k a. MonoidalMap k a -> MonoidalMap k a
328−deleteMax = coerce (Map.deleteMax :: Map k a -> Map k a)
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))
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))
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)
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)
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)
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)
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))
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))
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))
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))
360showTree :: forall k a. (Show k, Show a) => MonoidalMap k a -> String
75showTree :: forall k a. (Show k, Show a) => MonoidalMap k a -> String
361showTree = coerce (Map.showTree :: Map k a -> String)
76showTree = coerce (Map.showTree :: Map k a -> String)
363showTreeWith :: forall k a. (k -> a -> String) -> Bool -> Bool -> MonoidalMap k a -> String
78showTreeWith :: forall k a. (k -> a -> String) -> Bool -> Bool -> MonoidalMap k a -> String
364showTreeWith = coerce (Map.showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String)
79showTreeWith = coerce (Map.showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> String)
366−valid :: forall k a. Ord k => MonoidalMap k a -> Bool
367−valid = coerce (Map.valid :: Map k a -> Bool)
369instance Default (MonoidalMap k a) where
81instance Default (MonoidalMap k a) where
370 def = empty
82 def = empty