packages feed

groups-generic 0.2.0.0 → 0.3.0.0

raw patch · 3 files changed

+21/−31 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)
- Data.Group.Generics: instance (GHC.Generics.Generic g, GHC.Base.Semigroup g, GHC.Base.Monoid (Generic.Data.Internal.Generically.Generically g), Data.Group.Abelian (GHC.Generics.Rep g ())) => Data.Group.Abelian (Generic.Data.Internal.Generically.Generically g)
- Data.Group.Generics: instance (GHC.Generics.Generic g, GHC.Base.Semigroup g, GHC.Base.Monoid (Generic.Data.Internal.Generically.Generically g), Data.Group.Group (GHC.Generics.Rep g ())) => Data.Group.Group (Generic.Data.Internal.Generically.Generically g)
+ Data.Group.Generics: instance (GHC.Generics.Generic g, Data.Group.Group (Generic.Data.Internal.Generically.Generically g), Data.Group.Abelian (GHC.Generics.Rep g ())) => Data.Group.Abelian (Generic.Data.Internal.Generically.Generically g)
+ Data.Group.Generics: instance (GHC.Generics.Generic g, GHC.Base.Monoid (Generic.Data.Internal.Generically.Generically g), Data.Group.Group (GHC.Generics.Rep g ())) => Data.Group.Group (Generic.Data.Internal.Generically.Generically g)

Files

changelog.md view
@@ -1,5 +1,9 @@ # Changelog for package `generic-groups`
 
+## 0.3.0.0 ( December 3, 2022 )
+
+* Support GHC 9.4.
+
 ## 0.2.0.0 ( February 8, 2021 )
 
 * Support `groups-0.5`.
groups-generic.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.4
 name:           groups-generic
-version:        0.2.0.0
+version:        0.3.0.0
 synopsis:       Generically derive Group instances.
 category:       Algebra, Math
 license:        BSD-3-Clause
@@ -14,6 +14,9 @@ description:
   Generically derive group instances:
   .
+  > {-# LANGUAGE DeriveGeneric, DerivingVia #-}
+  > import GHC.Generics ( Generic, Generically (..) )
+  >
   > data MyRecord
   >   = MyRecord
   >   { field1 :: Sum Double
@@ -22,7 +25,7 @@   >   }
   >   deriving Generic
   >   deriving ( Semigroup, Monoid, Group )
-  >     via GenericProduct MyRecord
+  >     via Generically MyRecord
 
 source-repository head
   type: git
@@ -30,13 +33,16 @@ 
 library
 
-  build-depends: 
+  build-depends:
       base
-        >= 4.12 && < 4.17
-    , generic-data
-        >= 0.8.0.0 && < 0.10
+        >= 4.12 && < 4.18
     , groups
         >= 0.4.0.0 && < 0.6
+
+  if impl(ghc < 9.3)
+    build-depends:
+      generic-data
+        >= 0.8.0.0 && < 0.10
 
   hs-source-dirs:
       src
src/Data/Group/Generics.hs view
@@ -43,14 +43,12 @@ import Data.Proxy
   ( Proxy(..) )
 import GHC.Generics
-  ( Generic(..)
-  , U1(..), Rec1(..), M1(..), K1(..), Par1(..)
-  , (:*:)(..), (:.:)(..)
-  )
 
+#if __GLASGOW_HASKELL__ < 903
 -- generic-data
 import Generic.Data
   ( Generically(..), GenericProduct(..) )
+#endif
 
 -- groups
 import Data.Group
@@ -67,22 +65,12 @@ 
 instance
   ( Generic g
-  , Monoid ( GenericProduct g )
-  , Group  ( Rep g () )
-  )
-  => Group ( GenericProduct g ) where
-  invert  = ginvert
-  pow x n = gpow x n
-
-instance
-  ( Generic g
-  , Semigroup g
   , Monoid ( Generically g )
   , Group  ( Rep g () )
   )
   => Group ( Generically g ) where
-  invert  = ginvert
-  pow x n = gpow x n
+  invert (Generically g) = Generically ( ginvert g )
+  pow (Generically x) n = Generically ( gpow x n )
 
 instance Group (U1 p) where
   invert _ = U1
@@ -126,15 +114,7 @@ 
 instance
   ( Generic g
-  , Monoid  ( GenericProduct g )
-  , Abelian ( Rep g () )
-  )
-  => Abelian ( GenericProduct g )
-
-instance
-  ( Generic g
-  , Semigroup g
-  , Monoid  ( Generically g )
+  , Group ( Generically g )
   , Abelian ( Rep g () )
   )
   => Abelian ( Generically g )