unionWith
  :: EnumKey k => EnumKey k
  => (a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
unionWith f (EM l) (EM r) = EM $ IM.unionWith f l r
unionWith
  :: EnumKey k => EnumKey k
  => (a -> a -> a) -> EnumMap k a -> EnumMap k a -> EnumMap k a
unionWith f (EM l) (EM r) = EM $ IM.unionWith f l r
unionWith f (EM l) (EM r) = EM $ IM.unionWith f l r