Traverse over the entries whose keys are missing from the other map,
optionally producing values to put in the result. This is the most
powerful WhenMissing tactic, but others are usually more
efficient.
traverseWithKey f s == fromList$traverse ((k, v) -> (,) k $ f k v)
(toList m) That is, behaves exactly like a regular
traverse except that the traversing function also has access to
the key associated with a value.
traverseWithKey (\k v -> if odd k then Just (succ v) else Nothing) (fromList [(1, 'a'), (5, 'e')]) == Just (fromList [(1, 'b'), (5, 'f')])
traverseWithKey (\k v -> if odd k then Just (succ v) else Nothing) (fromList [(2, 'c')]) == Nothing