@@ -16,6 +16,7 @@ import Data.Foldable as F
16import Data.List as L
16import Data.List as L
17import Data.Map.Strict as M
17import Data.Map.Strict as M
18import Data.Monoid
18import Data.Monoid
19+import qualified Data.Semigroup as S
19import Data.Text as T
20import Data.Text as T
20import Data.Vector as V
21import Data.Vector as V
21import Test.QuickCheck
22import Test.QuickCheck
@@ -47,6 +48,10 @@ instance (Ord k) => Ixed (MonoidMap k v) where
47instance (Ord k) => At (MonoidMap k v) where
48instance (Ord k) => At (MonoidMap k v) where
48 at key = _MonoidMap . at key
49 at key = _MonoidMap . at key
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
50instance (Ord k, Monoid v) => Monoid (MonoidMap k v) where
55instance (Ord k, Monoid v) => Monoid (MonoidMap k v) where
51 mempty = MonoidMap M.empty
56 mempty = MonoidMap M.empty
52 mappend (MonoidMap a) (MonoidMap b) =
57 mappend (MonoidMap a) (MonoidMap b) =