ref: c4d8baa3c041399414347f044d15bcaf32582af4
parent: 8548d3b34eaa360ec68d210987f1a55b38900e95
author: Lennart Augustsson <lennart@augustsson.net>
date: Mon Nov 11 18:45:28 EST 2024
Add mergeWith
--- a/src/MicroHs/IdentMap.hs
+++ b/src/MicroHs/IdentMap.hs
@@ -14,7 +14,7 @@
null,
size,
toList, elems, keys,
- merge,
+ merge, mergeWith,
mapM,
) where
import Prelude(); import MHSPrelude hiding(lookup, mapM, null)
@@ -195,3 +195,7 @@
merge :: Map a -> Map a -> Map a
merge m1 m2 | size m1 <= size m2 = foldr (uncurry insert) m2 (toList m1)
| otherwise = merge m2 m1
+
+mergeWith :: (a -> a -> a) -> Map a -> Map a -> Map a
+mergeWith f m1 m2 | size m1 <= size m2 = foldr (uncurry $ insertWith f) m2 (toList m1)
+ | otherwise = mergeWith f m2 m1