generic-monoid 0.1.0.0 → 0.1.0.1
raw patch · 4 files changed
+14/−43 lines, 4 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- README.md +0/−27
- generic-monoid.cabal +3/−7
- src/Data/Monoid/Generic.hs +7/−9
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for generic-monoid +## 0.1.0.1 -- 2020-06-14++* Support GHC 8.4+ ## 0.1.0.0 -- 2018-12-12 * Initial release.
− README.md
@@ -1,27 +0,0 @@-# Generic Monoid (and Semigroup)--This library provides a method of deriving `Semigroup` and `Monoid` instances-for your large product types. It does this using GHC generics, and can provides-a mechanism for using the `DerivingVia` extension to reduce boilerplate.--It only works if each field of your product type is itself a `Semigroup`/`Monoid`.--```haskell-{-# LANGUAGE DerivingStrategies #-}-{-# LANGUAGE DerivingVia #-}-{-# LANGUAGE DeriveGeneric #-}--import GHC.Generics-import Data.Monoid.Generic--data BigProduct = BigProduct- { theList :: [Int]- , theSum :: Sum Double- , theString :: String- } deriving (Generic, Eq)- deriving Semigroup via GenericSemigroup BigProduct- deriving Monoid via GenericMonoid BigProduct--useIt :: Bool-useIt = (mempty <> mempty) == BigProduct [] 0 ""-```
generic-monoid.cabal view
@@ -1,5 +1,5 @@ name: generic-monoid-version: 0.1.0.0+version: 0.1.0.1 synopsis: Derive monoid instances for product types. description: Using GHC's generics, allow for deriving `Monoid` and `Semigroup` instances for your product types. license: BSD3@@ -9,15 +9,11 @@ copyright: 2018 Luke Clifton category: Data build-type: Simple-extra-source-files: ChangeLog.md README.md+extra-source-files: ChangeLog.md cabal-version: >=1.10 -source-repository head- type: git- location: https://github.com/luke-clifton/generic-monoid- library exposed-modules: Data.Semigroup.Generic, Data.Monoid.Generic- build-depends: base >=4.12 && <4.13+ build-depends: base >=4.11 && <4.15 hs-source-dirs: src default-language: Haskell2010
src/Data/Monoid/Generic.hs view
@@ -1,12 +1,8 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE StandaloneDeriving #-}-{-# LANGUAGE DerivingVia #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-} module Data.Monoid.Generic ( genericMappend , genericMempty@@ -14,9 +10,9 @@ , GenericMonoid(..) ) where -import GHC.TypeLits import Data.Semigroup.Generic import GHC.Generics+import GHC.TypeLits -- | A newtype which allows you to using the @DerivingVia@ extension -- to reduce boilerplate.@@ -32,7 +28,9 @@ -- to infinite recursion. newtype GenericMonoid a = GenericMonoid a deriving Show- deriving Semigroup via a++instance Semigroup a => Semigroup (GenericMonoid a) where+ GenericMonoid a <> GenericMonoid b = GenericMonoid $ a <> b instance (Semigroup a, Generic a, MemptyProduct (Rep a))