@@ -16,6 +16,7 @@ import Data.Foldable as F
1616import Data.List as L
1717import Data.Map.Strict as M
1818import Data.Monoid
19+import qualified Data.Semigroup as S
1920import Data.Text as T
2021import Data.Vector as V
2122import Test.QuickCheck
@@ -47,6 +48,10 @@ instance (Ord k) => Ixed (MonoidMap k v) where
4748instance (Ord k) => At (MonoidMap k v) where
4849 at key = _MonoidMap . at key
4950
51+instance (Ord k, S.Semigroup v) => S.Semigroup (MonoidMap k v) where
52+ (MonoidMap a) <> (MonoidMap b) =
53+ MonoidMap $ M.unionWith (S.<>) a b
54+
5055instance (Ord k, Monoid v) => Monoid (MonoidMap k v) where
5156 mempty = MonoidMap M.empty
5257 mappend (MonoidMap a) (MonoidMap b) =