monoids-0.1.2: Data/Monoid/IntMap.hs
{-# LANGUAGE MultiParamTypeClasses #-}
module Data.Monoid.IntMap
( module Data.Monoid.Reducer
, UnionWith(getUnionWith)
) where
import Data.Monoid.Reducer (Reducer, unit, cons, snoc, Monoid, mappend, mempty)
import Data.IntMap
newtype UnionWith m = UnionWith { getUnionWith :: IntMap m }
instance Monoid m => Monoid (UnionWith m) where
mempty = UnionWith empty
UnionWith a `mappend` UnionWith b = UnionWith (unionWith mappend a b)
instance Monoid m => Reducer (IntMap m) (UnionWith m) where
unit = UnionWith