generic-data-0.7.0.0: src/Generic/Data.hs
-- | Generic combinators to derive type class instances.
--
-- /base/ classes that GHC can not derive instances for, as of version 8.2:
--
-- - 'Data.Semigroup.Semigroup', 'Monoid', 'Applicative',
-- 'Control.Applicative.Alternative', 'Data.Functor.Classes.Eq1',
-- 'Data.Functor.Classes.Ord1', 'Data.Functor.Classes.Show1'.
--
-- On /base/ < 4.12 (i.e., GHC < 8.6), import "Generic.Data.Orphans" to obtain
-- instances needed internally to derive those.
--
-- GHC can derive instances for other classes here, although there may be
-- types supported by one method but not the other or vice versa.
module Generic.Data
( -- * Regular classes
-- ** 'Data.Semigroup.Semigroup'
gmappend
-- ** 'Monoid'
, gmempty
, gmappend'
-- ** 'Eq'
-- | Can also be derived by GHC as part of the standard.
, geq
-- ** 'Ord'
-- | Can also be derived by GHC as part of the standard.
, gcompare
-- ** 'Show'
-- | Can also be derived by GHC as part of the standard.
, gshowsPrec
, GShow0
-- ** 'Enum'
, GEnum()
-- *** StandardEnum option
-- | Can also be derived by GHC as part of the standard.
, StandardEnum()
, gtoEnum
, gfromEnum
, genumFrom
, genumFromThen
, genumFromTo
, genumFromThenTo
-- *** FiniteEnum option
, FiniteEnum()
, gtoFiniteEnum
, gfromFiniteEnum
, gfiniteEnumFrom
, gfiniteEnumFromThen
, gfiniteEnumFromTo
, gfiniteEnumFromThenTo
-- ** 'Bounded'
-- | Can also be derived by GHC as part of the standard.
, gminBound
, gmaxBound
, GBounded()
-- * Higher-kinded classes
-- ** 'Functor'
-- | Can also be derived by GHC (@DeriveFunctor@ extension).
, gfmap
, gconstmap
-- ** 'Foldable'
-- | Can also be derived by GHC (@DeriveFoldable@ extension).
, gfoldMap
, gfoldr
-- ** 'Traversable'
-- | Can also be derived by GHC (@DeriveTraversable@ extension).
, gtraverse
, gsequenceA
-- ** 'Applicative'
, gpure
, gap
, gliftA2
-- ** 'Control.Applicative.Alternative'
, gempty
, galt
-- ** 'Data.Functor.Classes.Eq1'
, gliftEq
-- ** 'Data.Functor.Classes.Ord1'
, gliftCompare
-- ** 'Data.Functor.Classes.Show1'
, gliftShowsPrec
, GShow1
-- * Fields wrappers for deriving
, Id1(..)
, Opaque(..)
, Opaque1(..)
-- * Carriers of generic instances
, Generically(..)
, FiniteEnumeration(..)
, Generically1(..)
-- * Newtype
-- | Generic pack/unpack.
, Newtype
, pack
, unpack
-- * Generic coercions
, gcoerce
, gcoerceBinop
-- * Accessing metadata
-- | Using @TypeApplications@.
-- ** Datatype
, gdatatypeName
, gmoduleName
, gpackageName
, gisNewtype
, GDatatype
-- ** Constructor
, gconName
, gconFixity
, gconIsRecord
, gconNum
, gconIndex
, Constructors
, GConstructors
-- *** Constructor tags
, ConId()
, conId
, conIdToInt
, conIdToString
, conIdEnum
-- ** Using type families
, MetaOf
, MetaDataName
, MetaDataModule
, MetaDataPackage
, MetaDataNewtype
, MetaConsName
, MetaConsFixity
, MetaConsRecord
, MetaSelNameM
, MetaSelName
, MetaSelUnpack
, MetaSelSourceStrictness
, MetaSelStrictness
) where
import Generic.Data.Internal.Prelude
import Generic.Data.Internal.Enum
import Generic.Data.Internal.Generically
import Generic.Data.Internal.Meta
import Generic.Data.Internal.Show
import Generic.Data.Internal.Newtype
import Generic.Data.Internal.Resolvers
import Generic.Data.Internal.Utils