unionsWith package:nonempty-containers

The union of a non-empty list of maps, with a combining operation: (unionsWith f == foldl1 (unionWith f)).
unionsWith (++) (fromList ((5, "a") :| [(3, "b")]) :| [fromList ((5, "A") :| [(7, "C")]), fromList ((5, "A3") :| [(3, "B3")])])
== fromList ((3, "bB3") :| [(5, "aAA3"), (7, "C")])
The union of a non-empty list of maps, with a combining operation: (unionsWith f == foldl1 (unionWith f)).
unionsWith (++) (fromList ((5, "a") :| [(3, "b")]) :| [fromList ((5, "A") :| [(7, "C")]), fromList ((5, "A3") :| [(3, "B3")])])
== fromList ((3, "bB3") :| [(5, "aAA3"), (7, "C")])