`Data.Map` has a general `mergeA` operation to merge two maps; I don't see any obvious obstacle to having a similar one here.