diff --git a/src/Data/Map/Monoidal.hs b/src/Data/Map/Monoidal.hs index fcff32c..7e1cba2 100644 --- a/src/Data/Map/Monoidal.hs +++ b/src/Data/Map/Monoidal.hs @@ -6,6 +6,7 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE StandaloneDeriving #-} -- | This module provides a 'Data.Map' variant which uses the value's -- 'Monoid' instance to accumulate conflicting entries when merging @@ -144,13 +145,24 @@ import Control.DeepSeq import qualified Data.Map as M import Control.Lens import Control.Newtype +import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1) +#if MIN_VERSION_containers(0,5,9) +import Data.Functor.Classes +#endif -- | A 'Map' with monoidal accumulation newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a } deriving (Show, Read, Functor, Eq, Ord, NFData, Foldable, Traversable, + FromJSON, ToJSON, FromJSON1, ToJSON1, Data, Typeable) +#if MIN_VERSION_containers(0,5,9) +deriving instance (Ord k) => Eq1 (MonoidalMap k) +deriving instance (Ord k) => Ord1 (MonoidalMap k) +deriving instance (Show k) => Show1 (MonoidalMap k) +#endif + type instance Index (MonoidalMap k a) = k type instance IxValue (MonoidalMap k a) = a instance Ord k => Ixed (MonoidalMap k a) where diff --git a/src/Data/Map/Monoidal/Strict.hs b/src/Data/Map/Monoidal/Strict.hs index b5aec2a..7971b75 100644 --- a/src/Data/Map/Monoidal/Strict.hs +++ b/src/Data/Map/Monoidal/Strict.hs @@ -6,6 +6,7 @@ {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE StandaloneDeriving #-} -- | This module provides a 'Data.Map' variant which uses the value's -- 'Monoid' instance to accumulate conflicting entries when merging @@ -144,13 +145,24 @@ import Control.DeepSeq import qualified Data.Map.Strict as M import Control.Lens import Control.Newtype +import Data.Aeson(FromJSON, ToJSON, FromJSON1, ToJSON1) +#if MIN_VERSION_containers(0,5,9) +import Data.Functor.Classes +#endif -- | A 'Map' with monoidal accumulation newtype MonoidalMap k a = MonoidalMap { getMonoidalMap :: M.Map k a } deriving (Show, Read, Functor, Eq, Ord, NFData, Foldable, Traversable, + FromJSON, ToJSON, FromJSON1, ToJSON1, Data, Typeable) +#if MIN_VERSION_containers(0,5,9) +deriving instance (Ord k) => Eq1 (MonoidalMap k) +deriving instance (Ord k) => Ord1 (MonoidalMap k) +deriving instance (Show k) => Show1 (MonoidalMap k) +#endif + type instance Index (MonoidalMap k a) = k type instance IxValue (MonoidalMap k a) = a instance Ord k => Ixed (MonoidalMap k a) where