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 +4/−0
- groups-generic.cabal +2/−2
- src/Data/Group/Generics.hs +29/−10
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)