shithub: MicroHs

Download patch

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