on develop help sign in
Unorphan MonoidalMap Group and Additive instances
commit5427c27b1ef567fb1bda5c00ad88aa1fc2250ec2 authorAli Abrar <aliabrar@gmail.com> dateSun 17 Mar 2019, 00:01 (8 years ago) parentcbbba30
2 files changed+6−11
src/Data/AppendMap.hs−11 src/Reflex/Patch.hs+6
src/Data/AppendMap.hs−11
@@ -1,15 +1,10 @@
11{-# LANGUAGE CPP #-}
2−{-# LANGUAGE DeriveFunctor #-}
3−{-# LANGUAGE DeriveGeneric #-}
4−{-# LANGUAGE DeriveTraversable #-}
52{-# LANGUAGE FlexibleContexts #-}
63{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
84{-# LANGUAGE MultiParamTypeClasses #-}
95{-# LANGUAGE PatternSynonyms #-}
106{-# LANGUAGE RoleAnnotations #-}
117{-# LANGUAGE ScopedTypeVariables #-}
12−{-# LANGUAGE StandaloneDeriving #-}
138{-# LANGUAGE TypeFamilies #-}
149{-# OPTIONS_GHC -fno-warn-orphans #-}
1510-- | 'Data.Map' with a better 'Monoid' instance
@@ -33,7 +28,6 @@ import qualified Data.Map as Map (showTree, showTreeWith)
3328#endif
3429import Data.Map.Monoidal
3530import Reflex.Class (FunctorMaybe (..))
36−import Reflex.Patch (Additive, Group (..))
3731
3832{-# DEPRECATED AppendMap "Use 'MonoidalMap' instead" #-}
3933type AppendMap = MonoidalMap
@@ -66,11 +60,6 @@ mapMaybeNoNull f as =
6660 else Just bs
6761
6862-- TODO: Move instances to `Reflex.Patch`
69−instance (Ord k, Group q) => Group (MonoidalMap k q) where
70− negateG = map negateG
71−
72−instance (Ord k, Additive q) => Additive (MonoidalMap k q)
73−
7463showTree :: forall k a. (Show k, Show a) => MonoidalMap k a -> String
7564showTree = coerce (Map.showTree :: Map k a -> String)
7665
src/Reflex/Patch.hs+6
@@ -21,6 +21,7 @@ import Reflex.Patch.Map as X
2121import Reflex.Patch.MapWithMove as X (PatchMapWithMove, patchMapWithMoveNewElements,
2222 patchMapWithMoveNewElementsMap, unPatchMapWithMove,
2323 unsafePatchMapWithMove)
24+import Data.Map.Monoidal (MonoidalMap)
2425import Data.Semigroup (Semigroup (..), (<>))
2526
2627-- | A 'Group' is a 'Monoid' where every element has an inverse.
@@ -38,3 +39,8 @@ newtype AdditivePatch p = AdditivePatch { unAdditivePatch :: p }
3839instance Additive p => Patch (AdditivePatch p) where
3940 type PatchTarget (AdditivePatch p) = p
4041 apply (AdditivePatch p) q = Just $ p <> q
42+
43+instance (Ord k, Group q) => Group (MonoidalMap k q) where
44+ negateG = fmap negateG
45+
46+instance (Ord k, Additive q) => Additive (MonoidalMap k q)