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 +4/−0
- groups-generic.cabal +12/−6
- src/Data/Group/Generics.hs +5/−25
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 )