Modulesemigroups-0.20Haskell98
Data.Semigroup.Generic
This module provides generic deriving tools for monoids and semigroups for product-like structures.
- 1 type
- 2 classes
- 2 values
- Packagesemigroups-0.20
- Exports5
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceGeneric.hs
Generic method implementations
2 declarationsAdapter newtype
1 declarationAn adapter newtype, suitable for DerivingVia. Its Semigroup and
Monoid instances leverage the Generic-based defaults defined by
gmappend and gmempty. Here is an example of how to use it:
{-# LANGUAGE DerivingVia #-}
import Data.Semigroup.Generic
data Pair a = MkPair a a
deriving (Semigroup, Monoid) via (GenericSemigroupMonoid (Pair a))
Constructors
Instances2Semigroup, Monoid
(Generic a, GSemigroup (Rep a)) => Semigroup (GenericSemigroupMonoid a)Defined in semigroups-0.20 · Data.Semigroup.Generic(Generic a, GMonoid (Rep a)) => Monoid (GenericSemigroupMonoid a)Defined in semigroups-0.20 · Data.Semigroup.Generic
Internal classes
2 declarationsInstances5GSemigroup
GSemigroup U1Defined in semigroups-0.20 · Data.Semigroup.GenericGSemigroup V1Defined in semigroups-0.20 · Data.Semigroup.GenericSemigroup a => GSemigroup (K1 i a)Defined in semigroups-0.20 · Data.Semigroup.Generic(GSemigroup f, GSemigroup g) => GSemigroup (f :*: g)Defined in semigroups-0.20 · Data.Semigroup.GenericGSemigroup f => GSemigroup (M1 i c f)Defined in semigroups-0.20 · Data.Semigroup.Generic
Instances4GMonoid
GMonoid U1Defined in semigroups-0.20 · Data.Semigroup.Generic(Semigroup a, Monoid a) => GMonoid (K1 i a)Defined in semigroups-0.20 · Data.Semigroup.Generic(GMonoid f, GMonoid g) => GMonoid (f :*: g)Defined in semigroups-0.20 · Data.Semigroup.GenericGMonoid f => GMonoid (M1 i c f)Defined in semigroups-0.20 · Data.Semigroup.Generic