packages feed

groups-generic 0.1.0.0 → 0.2.0.0

raw patch · 3 files changed

+44/−38 lines, 3 filesdep ~basedep ~generic-datadep ~groupsPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, generic-data, groups

API changes (from Hackage documentation)

- Data.Group.Generics: instance (Data.Group.Abelian (f1 p), Data.Group.Abelian (f2 p)) => Data.Group.Abelian ((GHC.Generics.:*:) f1 f2 p)
- Data.Group.Generics: instance (Data.Group.Group (f1 p), Data.Group.Group (f2 p)) => Data.Group.Group ((GHC.Generics.:*:) f1 f2 p)
- Data.Group.Generics: instance Data.Group.Abelian (Data.Proxy.Proxy s)
- Data.Group.Generics: instance Data.Group.Abelian (GHC.Generics.U1 p)
- Data.Group.Generics: instance Data.Group.Abelian (f (g p)) => Data.Group.Abelian ((GHC.Generics.:.:) f g p)
- Data.Group.Generics: instance Data.Group.Abelian (f p) => Data.Group.Abelian (GHC.Generics.M1 i c f p)
- Data.Group.Generics: instance Data.Group.Abelian (f p) => Data.Group.Abelian (GHC.Generics.Rec1 f p)
- Data.Group.Generics: instance Data.Group.Abelian a => Data.Group.Abelian (Data.Functor.Const.Const a b)
- Data.Group.Generics: instance Data.Group.Abelian a => Data.Group.Abelian (Data.Functor.Identity.Identity a)
- Data.Group.Generics: instance Data.Group.Abelian a => Data.Group.Abelian (Data.Ord.Down a)
- Data.Group.Generics: instance Data.Group.Abelian g => Data.Group.Abelian (GHC.Generics.K1 i g p)
- Data.Group.Generics: instance Data.Group.Abelian g => Data.Group.Abelian (GHC.Generics.Par1 g)
- Data.Group.Generics: instance Data.Group.Group (Data.Proxy.Proxy s)
- Data.Group.Generics: instance Data.Group.Group (f (g p)) => Data.Group.Group ((GHC.Generics.:.:) f g p)
- Data.Group.Generics: instance Data.Group.Group a => Data.Group.Group (Data.Functor.Const.Const a b)
- Data.Group.Generics: instance Data.Group.Group a => Data.Group.Group (Data.Functor.Identity.Identity a)
- Data.Group.Generics: instance Data.Group.Group a => Data.Group.Group (Data.Ord.Down a)

Files

changelog.md view
@@ -1,5 +1,9 @@ # Changelog for package `generic-groups`
 
+## 0.2.0.0 ( February 8, 2021 )
+
+* Support `groups-0.5`.
+
 ## 0.1.0.0 ( February 14, 2020 )
 
 * Initial release
groups-generic.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.4
 name:           groups-generic
-version:        0.1.0.0
+version:        0.2.0.0
 synopsis:       Generically derive Group instances.
 category:       Algebra, Math
 license:        BSD-3-Clause
@@ -32,11 +32,11 @@ 
   build-depends: 
       base
-        >= 4.12 && < 4.15
+        >= 4.12 && < 4.17
     , generic-data
-        ^>= 0.8.0.0
+        >= 0.8.0.0 && < 0.10
     , groups
-        ^>= 0.4.0.0
+        >= 0.4.0.0 && < 0.6
 
   hs-source-dirs:
       src
src/Data/Group/Generics.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE
-    FlexibleContexts
+    CPP
+  , FlexibleContexts
   , MonoLocalBinds
   , ScopedTypeVariables
   , TypeApplications
@@ -7,6 +8,7 @@ #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 {-|
 Module: Data.Group.Generics
@@ -57,28 +59,6 @@ -----------------------------------------------------------------------
 -- Instances for 'Group'.
 
-instance Group (U1 p) where
-  invert _ = U1
-  pow  _ _ = U1
-instance Group (f p) => Group (Rec1 f p) where
-  invert (Rec1 g) = Rec1 (invert g)
-  pow (Rec1 g) n = Rec1 (pow g n)
-instance Group (f p) => Group (M1 i c f p) where
-  invert (M1 g) = M1 (invert g)
-  pow (M1 g) n = M1 (pow g n)
-instance Group g => Group (K1 i g p) where
-  invert (K1 g) = K1 (invert g)
-  pow (K1 g) n = K1 (pow g n)
-instance Group g => Group (Par1 g) where
-  invert (Par1 g) = Par1 (invert g)
-  pow (Par1 g) n = Par1 (pow g n)
-instance (Group (f1 p), Group (f2 p) ) => Group ((:*:) f1 f2 p) where
-  invert ( g1 :*: g2 ) = ( invert g1 :*: invert g2 )
-  pow ( g1 :*: g2 ) n = ( pow g1 n :*: pow g2 n )
-instance Group (f (g p)) => Group ((:.:) f g p) where
-  invert (Comp1 g) = Comp1 (invert g)
-  pow (Comp1 g) n = Comp1 (pow g n)
-
 ginvert :: forall g. ( Generic g, Group ( Rep g () ) ) => g -> g
 ginvert = to . invert @( Rep g () ) . from
 
@@ -104,7 +84,29 @@   invert  = ginvert
   pow x n = gpow x n
 
--- Other useful instances.
+instance Group (U1 p) where
+  invert _ = U1
+  pow  _ _ = U1
+instance Group (f p) => Group (Rec1 f p) where
+  invert (Rec1 g) = Rec1 (invert g)
+  pow (Rec1 g) n = Rec1 (pow g n)
+instance Group (f p) => Group (M1 i c f p) where
+  invert (M1 g) = M1 (invert g)
+  pow (M1 g) n = M1 (pow g n)
+instance Group g => Group (K1 i g p) where
+  invert (K1 g) = K1 (invert g)
+  pow (K1 g) n = K1 (pow g n)
+instance Group g => Group (Par1 g) where
+  invert (Par1 g) = Par1 (invert g)
+  pow (Par1 g) n = Par1 (pow g n)
+
+#if !MIN_VERSION_groups(0,5,0)
+instance (Group (f1 p), Group (f2 p) ) => Group ((:*:) f1 f2 p) where
+  invert ( g1 :*: g2 ) = ( invert g1 :*: invert g2 )
+  pow ( g1 :*: g2 ) n = ( pow g1 n :*: pow g2 n )
+instance Group (f (g p)) => Group ((:.:) f g p) where
+  invert (Comp1 g) = Comp1 (invert g)
+  pow (Comp1 g) n = Comp1 (pow g n)
 instance Group a => Group (Down a) where
   invert (Down a) = Down (invert a)
   pow (Down a) n = Down (pow a n)
@@ -117,19 +119,11 @@ instance Group (Proxy s) where
   invert _ = Proxy
   pow  _ _ = Proxy
-
+#endif
 
 -----------------------------------------------------------------------
 -- Instances for 'Abelian'.
 
-instance Abelian (U1 p)
-instance Abelian (f p) => Abelian (Rec1 f p)
-instance Abelian (f p) => Abelian (M1 i c f p)
-instance Abelian g => Abelian (K1 i g p)
-instance Abelian g => Abelian (Par1 g)
-instance (Abelian (f1 p), Abelian (f2 p)) => Abelian ((:*:) f1 f2 p)
-instance Abelian (f (g p)) => Abelian ((:.:) f g p)
-
 instance
   ( Generic g
   , Monoid  ( GenericProduct g )
@@ -145,9 +139,17 @@   )
   => Abelian ( Generically g )
 
+#if !MIN_VERSION_groups(0,5,0)
+instance Abelian (U1 p)
+instance Abelian (f p) => Abelian (Rec1 f p)
+instance Abelian (f p) => Abelian (M1 i c f p)
+instance Abelian g => Abelian (K1 i g p)
+instance Abelian g => Abelian (Par1 g)
+instance (Abelian (f1 p), Abelian (f2 p)) => Abelian ((:*:) f1 f2 p)
+instance Abelian (f (g p)) => Abelian ((:.:) f g p)
 
--- Other useful instances.
 instance Abelian a => Abelian (Down a)
 instance Abelian a => Abelian (Identity a) where
 instance Abelian a => Abelian (Const a b) where
 instance Abelian (Proxy s) where
+#endif