on develop help sign in
Even more Semigroup superclasses for old GHC
15c4787John Ericson
src/Data/Patch/MapWithPatchingMove.hs+21−5
@@ -46,7 +46,14 @@ deriving instance (Show k, Show p, Show (PatchTarget p)) => Show (PatchMapWithPa
46deriving instance (Ord k, Read k, Read p, Read (PatchTarget p)) => Read (PatchMapWithPatchingMove k p)
46deriving instance (Ord k, Read k, Read p, Read (PatchTarget p)) => Read (PatchMapWithPatchingMove k p)
47deriving instance (Eq k, Eq p, Eq (PatchTarget p)) => Eq (PatchMapWithPatchingMove k p)
47deriving instance (Eq k, Eq p, Eq (PatchTarget p)) => Eq (PatchMapWithPatchingMove k p)
48deriving instance (Ord k, Ord p, Ord (PatchTarget p)) => Ord (PatchMapWithPatchingMove k p)
48deriving instance (Ord k, Ord p, Ord (PatchTarget p)) => Ord (PatchMapWithPatchingMove k p)
49+
50+deriving instance ( Ord k
51+#if !MIN_VERSION_base(4,11,0)
52+ , Semigroup p
53+#endif
54+ , DecidablyEmpty p
55+ , Patch p
49−deriving instance (Ord k, Monoid p, DecidablyEmpty p, Patch p) => DecidablyEmpty (PatchMapWithPatchingMove k p)
56+ ) => DecidablyEmpty (PatchMapWithPatchingMove k p)
50
57
51-- | Holds the information about each key: where its new value should come from,
58-- | Holds the information about each key: where its new value should come from,
52-- and where its old value should go to
59-- and where its old value should go to
@@ -129,7 +136,13 @@ insertMapKey k v = PatchMapWithPatchingMove . Map.singleton k $ NodeInfo (From_I
129-- 'Map.delete' src (maybe map ('Map.insert' dst) (Map.lookup src map))
136-- 'Map.delete' src (maybe map ('Map.insert' dst) (Map.lookup src map))
130-- @
137-- @
131moveMapKey
138moveMapKey
139+ :: ( DecidablyEmpty p
140+#if !MIN_VERSION_base(4,11,0)
141+ , Semigroup p
142+#endif
143+ , Patch p
144+ )
132− :: (DecidablyEmpty p, Patch p) => Ord k => k -> k -> PatchMapWithPatchingMove k p
145+ => Ord k => k -> k -> PatchMapWithPatchingMove k p
133moveMapKey src dst
146moveMapKey src dst
134 | src == dst = mempty
147 | src == dst = mempty
135 | otherwise =
148 | otherwise =
@@ -148,7 +161,12 @@ moveMapKey src dst
148-- . Map.delete a . Map.delete b $ map
161-- . Map.delete a . Map.delete b $ map
149-- @
162-- @
150swapMapKey
163swapMapKey
151− :: (DecidablyEmpty p, Patch p)
164+ :: ( DecidablyEmpty p
165+#if !MIN_VERSION_base(4,11,0)
166+ , Semigroup p
167+#endif
168+ , Patch p
169+ )
152 => Ord k => k -> k -> PatchMapWithPatchingMove k p
170 => Ord k => k -> k -> PatchMapWithPatchingMove k p
153swapMapKey src dst
171swapMapKey src dst
154 | src == dst = mempty
172 | src == dst = mempty
@@ -290,7 +308,6 @@ instance ( Ord k
290#if !MIN_VERSION_base(4,11,0)
308#if !MIN_VERSION_base(4,11,0)
291 , Semigroup p
309 , Semigroup p
292#endif
310#endif
293− , Monoid p
294 , DecidablyEmpty p
311 , DecidablyEmpty p
295 , Patch p
312 , Patch p
296 ) => Semigroup (PatchMapWithPatchingMove k p) where
313 ) => Semigroup (PatchMapWithPatchingMove k p) where
@@ -352,7 +369,6 @@ instance ( Ord k
352#if !MIN_VERSION_base(4,11,0)
369#if !MIN_VERSION_base(4,11,0)
353 , Semigroup p
370 , Semigroup p
354#endif
371#endif
355− , Monoid p
356 , DecidablyEmpty p
372 , DecidablyEmpty p
357 , Patch p
373 , Patch p
358 ) => Monoid (PatchMapWithPatchingMove k p) where
374 ) => Monoid (PatchMapWithPatchingMove k p) where