packages feed

groups-generic 0.3.0.0 → 0.3.1.0

raw patch · 3 files changed

+35/−12 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Data.Group.Generics: instance (GHC.Generics.Generic g, GHC.Base.Monoid (Generic.Data.Internal.Generically.GenericProduct g), Data.Group.Abelian (GHC.Generics.Rep g ())) => Data.Group.Abelian (Generic.Data.Internal.Generically.GenericProduct g)
+ Data.Group.Generics: instance (GHC.Generics.Generic g, GHC.Base.Monoid (Generic.Data.Internal.Generically.GenericProduct g), Data.Group.Group (GHC.Generics.Rep g ())) => Data.Group.Group (Generic.Data.Internal.Generically.GenericProduct g)

Files

changelog.md view
@@ -1,5 +1,9 @@ # Changelog for package `generic-groups`
 
+## 0.3.1.0 ( December 4, 2022 )
+
+* Fix support for GHC 9.2 and older, which was broken by version `0.3.0.0`.
+
 ## 0.3.0.0 ( December 3, 2022 )
 
 * Support GHC 9.4.
groups-generic.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.4
 name:           groups-generic
-version:        0.3.0.0
+version:        0.3.1.0
 synopsis:       Generically derive Group instances.
 category:       Algebra, Math
 license:        BSD-3-Clause
@@ -35,7 +35,7 @@ 
   build-depends:
       base
-        >= 4.12 && < 4.18
+        >= 4.12   && < 4.18
     , groups
         >= 0.4.0.0 && < 0.6
 
src/Data/Group/Generics.hs view
@@ -15,20 +15,19 @@ 
 Orphan instances allowing generic deriving of 'Group' instances:
 
-> > data MyRecord
-> >   = MyRecord
-> >   { field1 :: Sum Double
-> >   , field2 :: Product Double
-> >   , field3 :: ( Sum Int, Sum Int )
-> >   }
-> >   deriving Generic
-> >   deriving ( Semigroup, Monoid, Group )
-> >     via GenericProduct MyRecord
+>  > data MyRecord
+>  >   = MyRecord
+>  >   { field1 :: Sum Double
+>  >   , field2 :: Product Double
+>  >   , field3 :: ( Sum Int, Sum Int )
+>  >   }
+>  >   deriving Generic
+>  >   deriving ( Semigroup, Monoid, Group )
+>  >     via Generically MyRecord
 
 Also includes some instances for newtypes from @base@ such as 'Identity' and 'Const'.
 -}
 
-
 module Data.Group.Generics
   ( )
   where
@@ -63,8 +62,19 @@ gpow :: forall n g. ( Integral n, Generic g, Group ( Rep g () ) ) => g -> n -> g
 gpow x n = to ( pow @( Rep g () ) ( from x ) n )
 
+#if __GLASGOW_HASKELL__ < 903
 instance
   ( Generic g
+  , Monoid ( GenericProduct g )
+  , Group  ( Rep g () )
+  )
+  => Group ( GenericProduct g ) where
+  invert  = ginvert
+  pow x n = gpow x n
+#endif
+
+instance
+  ( Generic g
   , Monoid ( Generically g )
   , Group  ( Rep g () )
   )
@@ -118,6 +128,15 @@   , Abelian ( Rep g () )
   )
   => Abelian ( Generically g )
+
+#if __GLASGOW_HASKELL__ < 903
+instance
+  ( Generic g
+  , Monoid  ( GenericProduct g )
+  , Abelian ( Rep g () )
+  )
+  => Abelian ( GenericProduct g )
+#endif
 
 #if !MIN_VERSION_groups(0,5,0)
 instance Abelian (U1 p)