| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Generic.Data
Contents
Description
Generic combinators to derive type class instances.
base classes that GHC can not derive instances for, as of version 8.2:
Semigroup,Monoid,Applicative,Alternative,Eq1,Ord1,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.
Synopsis
- gmappend :: (Generic a, Semigroup (Rep a ())) => a -> a -> a
- gmempty :: (Generic a, Monoid (Rep a ())) => a
- gmappend' :: (Generic a, Monoid (Rep a ())) => a -> a -> a
- geq :: (Generic a, Eq (Rep a ())) => a -> a -> Bool
- gcompare :: (Generic a, Ord (Rep a ())) => a -> a -> Ordering
- greadPrec :: (Generic a, GRead0 (Rep a)) => ReadPrec a
- type GRead0 = GRead Proxy
- gshowsPrec :: (Generic a, GShow0 (Rep a)) => Int -> a -> ShowS
- type GShow0 = GShow Proxy
- class GEnum opts f
- data StandardEnum
- gtoEnum :: (Generic a, GEnum StandardEnum (Rep a)) => Int -> a
- gfromEnum :: (Generic a, GEnum StandardEnum (Rep a)) => a -> Int
- genumFrom :: (Generic a, GEnum StandardEnum (Rep a)) => a -> [a]
- genumFromThen :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> [a]
- genumFromTo :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> [a]
- genumFromThenTo :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> a -> [a]
- data FiniteEnum
- gtoFiniteEnum :: (Generic a, GEnum FiniteEnum (Rep a)) => Int -> a
- gfromFiniteEnum :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> Int
- gfiniteEnumFrom :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> [a]
- gfiniteEnumFromThen :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> [a]
- gfiniteEnumFromTo :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> [a]
- gfiniteEnumFromThenTo :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> a -> [a]
- gminBound :: (Generic a, GBounded (Rep a)) => a
- gmaxBound :: (Generic a, GBounded (Rep a)) => a
- class GBounded f
- grange :: (Generic a, GIx (Rep a)) => (a, a) -> [a]
- gindex :: (Generic a, GIx (Rep a)) => (a, a) -> a -> Int
- ginRange :: (Generic a, GIx (Rep a)) => (a, a) -> a -> Bool
- class GIx f
- gunsafeIndex :: (Generic a, GIx (Rep a)) => (a, a) -> a -> Int
- gfmap :: (Generic1 f, Functor (Rep1 f)) => (a -> b) -> f a -> f b
- gconstmap :: (Generic1 f, Functor (Rep1 f)) => a -> f b -> f a
- gfoldMap :: (Generic1 f, Foldable (Rep1 f), Monoid m) => (a -> m) -> f a -> m
- gfoldr :: (Generic1 f, Foldable (Rep1 f)) => (a -> b -> b) -> b -> f a -> b
- gtraverse :: (Generic1 f, Traversable (Rep1 f), Applicative m) => (a -> m b) -> f a -> m (f b)
- gsequenceA :: (Generic1 f, Traversable (Rep1 f), Applicative m) => f (m a) -> m (f a)
- gpure :: (Generic1 f, Applicative (Rep1 f)) => a -> f a
- gap :: (Generic1 f, Applicative (Rep1 f)) => f (a -> b) -> f a -> f b
- gliftA2 :: (Generic1 f, Applicative (Rep1 f)) => (a -> b -> c) -> f a -> f b -> f c
- gempty :: (Generic1 f, Alternative (Rep1 f)) => f a
- galt :: (Generic1 f, Alternative (Rep1 f)) => f a -> f a -> f a
- gliftEq :: (Generic1 f, Eq1 (Rep1 f)) => (a -> b -> Bool) -> f a -> f b -> Bool
- gliftCompare :: (Generic1 f, Ord1 (Rep1 f)) => (a -> b -> Ordering) -> f a -> f b -> Ordering
- gliftReadPrec :: (Generic1 f, GRead1 (Rep1 f)) => ReadPrec a -> ReadPrec [a] -> ReadPrec (f a)
- type GRead1 = GRead Identity
- gliftShowsPrec :: (Generic1 f, GShow1 (Rep1 f)) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS
- type GShow1 = GShow Identity
- newtype Id1 f a = Id1 {
- unId1 :: f a
- newtype Opaque a = Opaque {
- unOpaque :: a
- newtype Opaque1 f a = Opaque1 {
- unOpaque1 :: f a
- newtype Generically a = Generically {
- unGenerically :: a
- newtype GenericProduct a = GenericProduct {
- unGenericProduct :: a
- newtype FiniteEnumeration a = FiniteEnumeration {
- unFiniteEnumeration :: a
- newtype Generically1 f a = Generically1 {
- unGenerically1 :: f a
- class (Generic a, Coercible a (Old a), Newtype' a) => Newtype a
- type Old a = GOld (Rep a)
- pack :: Newtype a => Old a -> a
- unpack :: Newtype a => a -> Old a
- gcoerce :: (Generic a, Generic b, Coercible (Rep a) (Rep b)) => a -> b
- gcoerceBinop :: (Generic a, Generic b, Coercible (Rep a) (Rep b)) => (a -> a -> a) -> b -> b -> b
- gdatatypeName :: forall a. (Generic a, GDatatype (Rep a)) => String
- gmoduleName :: forall a. (Generic a, GDatatype (Rep a)) => String
- gpackageName :: forall a. (Generic a, GDatatype (Rep a)) => String
- gisNewtype :: forall a. (Generic a, GDatatype (Rep a)) => Bool
- class GDatatype f
- gconName :: forall a. Constructors a => a -> String
- gconFixity :: forall a. Constructors a => a -> Fixity
- gconIsRecord :: forall a. Constructors a => a -> Bool
- gconNum :: forall a. Constructors a => Int
- gconIndex :: forall a. Constructors a => a -> Int
- class (Generic a, GConstructors (Rep a)) => Constructors a
- class GConstructors r
- data ConId a
- conId :: forall a. Constructors a => a -> ConId a
- conIdToInt :: forall a. ConId a -> Int
- conIdToString :: forall a. Constructors a => ConId a -> String
- conIdEnum :: forall a. Constructors a => [ConId a]
- conIdNamed :: forall s a. ConIdNamed s a => ConId a
- class (Generic a, KnownNat (ConIdNamed' n a)) => ConIdNamed n a
- type family MetaOf (f :: * -> *) :: Meta where ...
- type family MetaDataName (m :: Meta) :: Symbol where ...
- type family MetaDataModule (m :: Meta) :: Symbol where ...
- type family MetaDataPackage (m :: Meta) :: Symbol where ...
- type family MetaDataNewtype (m :: Meta) :: Bool where ...
- type family MetaConsName (m :: Meta) :: Symbol where ...
- type family MetaConsFixity (m :: Meta) :: FixityI where ...
- type family MetaConsRecord (m :: Meta) :: Bool where ...
- type family MetaSelNameM (m :: Meta) :: Maybe Symbol where ...
- type family MetaSelName (m :: Meta) :: Symbol where ...
- type family MetaSelUnpack (m :: Meta) :: SourceUnpackedness where ...
- type family MetaSelSourceStrictness (m :: Meta) :: SourceStrictness where ...
- type family MetaSelStrictness (m :: Meta) :: DecidedStrictness where ...
Regular classes
Semigroup
Monoid
Eq
Can also be derived by GHC as part of the standard.
Ord
Can also be derived by GHC as part of the standard.
Read
Can also be derived by GHC as part of the standard.
greadPrec :: (Generic a, GRead0 (Rep a)) => ReadPrec a Source #
Generic readPrec.
instanceReadMyType wherereadPrec=greadPrecreadListPrec=readListPrecDefault
Show
Can also be derived by GHC as part of the standard.
gshowsPrec :: (Generic a, GShow0 (Rep a)) => Int -> a -> ShowS Source #
Generic showsPrec.
instanceShowMyType whereshowsPrec=gshowsPrec
Enum
Generic representation of Enum types.
The opts parameter is a type-level option to select different
implementations.
Minimal complete definition
Instances
| GEnum opts (U1 :: Type -> Type) Source # | |
| (GEnum opts f, GEnum opts g) => GEnum opts (f :+: g) Source # | |
| (Bounded c, Enum c) => GEnum FiniteEnum (K1 i c :: Type -> Type) Source # | |
| (GEnum FiniteEnum f, GEnum FiniteEnum g) => GEnum FiniteEnum (f :*: g) Source # | |
| GEnum opts f => GEnum opts (M1 i c f) Source # | |
StandardEnum option
Can also be derived by GHC as part of the standard.
data StandardEnum Source #
Standard option for GEnum: derive Enum for types with only nullary
constructors (the same restrictions as in the Haskell 2010
report).
gtoEnum :: (Generic a, GEnum StandardEnum (Rep a)) => Int -> a Source #
Generic toEnum generated with the StandardEnum option.
instanceEnumMyType wheretoEnum=gtoEnumfromEnum=gfromEnumenumFrom=genumFromenumFromThen=genumFromThenenumFromTo=genumFromToenumFromThenTo=genumFromThenTo
gfromEnum :: (Generic a, GEnum StandardEnum (Rep a)) => a -> Int Source #
Generic fromEnum generated with the StandardEnum option.
See also gtoEnum.
genumFrom :: (Generic a, GEnum StandardEnum (Rep a)) => a -> [a] Source #
Generic enumFrom generated with the StandardEnum option.
See also gtoEnum.
genumFromThen :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> [a] Source #
Generic enumFromThen generated with the StandardEnum option.
See also gtoEnum.
genumFromTo :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> [a] Source #
Generic enumFromTo generated with the StandardEnum option.
See also gtoEnum.
genumFromThenTo :: (Generic a, GEnum StandardEnum (Rep a)) => a -> a -> a -> [a] Source #
Generic enumFromThenTo generated with the StandardEnum option.
See also gtoEnum.
FiniteEnum option
data FiniteEnum Source #
Extends the StandardEnum option for GEnum to allow all constructors to
have arbitrary many fields. Each field type must be an instance of
both Enum and Bounded.
Details
Two restrictions require the user's caution:
- The
Enuminstances of the field types need to start enumerating from 0. ParticularlyIntis an unfit field type, because the enumeration of the negative values starts before 0. - There can only be up to
values (because the implementation represents the cardinality explicitly as anmaxBound::IntInt). This restriction makesWordan invalid field type. Notably, it is insufficient for each individual field types to stay below this limit. Instead it applies to the generic type as a whole.
The resulting GEnum instance starts enumerating from 0 up to
(cardinality - 1) and respects the generic Ord instance (defined by
gcompare). The values from different constructors are enumerated
sequentially; they are not interleaved.
data Example = C0 Bool Bool | C1 Bool deriving (Eq,Ord,Show,Generic) cardinality = 6 -- 2 * 2 + 2 -- Bool * Bool | Bool enumeration = [ C0 False False , C0 False True , C0 True False , C0 True True , C1 False , C1 True ] enumeration == mapgtoFiniteEnum[0 .. 5] [0 .. 5] == mapgfromFiniteEnumenumeration
Instances
| (Bounded c, Enum c) => GEnum FiniteEnum (K1 i c :: Type -> Type) Source # | |
| (GEnum FiniteEnum f, GEnum FiniteEnum g) => GEnum FiniteEnum (f :*: g) Source # | |
gtoFiniteEnum :: (Generic a, GEnum FiniteEnum (Rep a)) => Int -> a Source #
Generic toEnum generated with the FiniteEnum option.
instanceEnumMyType wheretoEnum=gtoFiniteEnumfromEnum=gfromFiniteEnumenumFrom=gfiniteEnumFromenumFromThen=gfiniteEnumFromThenenumFromTo=gfiniteEnumFromToenumFromThenTo=gfiniteEnumFromThenTo
gfromFiniteEnum :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> Int Source #
Generic fromEnum generated with the FiniteEnum option.
See also gtoFiniteEnum.
gfiniteEnumFrom :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> [a] Source #
Generic enumFrom generated with the FiniteEnum option.
See also gtoFiniteEnum.
gfiniteEnumFromThen :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> [a] Source #
Generic enumFromThen generated with the FiniteEnum option.
See also gtoFiniteEnum.
gfiniteEnumFromTo :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> [a] Source #
Generic enumFromTo generated with the FiniteEnum option.
See also gtoFiniteEnum.
gfiniteEnumFromThenTo :: (Generic a, GEnum FiniteEnum (Rep a)) => a -> a -> a -> [a] Source #
Generic enumFromThenTo generated with the FiniteEnum option.
See also gtoFiniteEnum.
Bounded
Can also be derived by GHC as part of the standard.
Generic representation of Bounded types.
Ix
Can also be derived by GHC as part of the standard.
Generic representation of Ix types.
Minimal complete definition
gunsafeIndex :: (Generic a, GIx (Rep a)) => (a, a) -> a -> Int Source #
Generic unsafeIndex.
Details
The functions unsafeIndex and unsafeRangeSize belong to Ix but are
internal to GHC and hence not exported from the module Data.Ix. However they
are exported from the module GHC.Arr.
See grange for how to define an instance of Ix such that it does not
depend on the stability of GHCs internal API. Unfortunately this results in
additional (unnecessary) bound checks.
With the danger of having no stability guarantees for GHC's internal API one
can alternatively define an instance of Ix as
import GHC.Arr instanceIxMyType whererange=grangeunsafeIndex =gunsafeIndexinRange=ginRange
Higher-kinded classes
Functor
Can also be derived by GHC (DeriveFunctor extension).
Foldable
Can also be derived by GHC (DeriveFoldable extension).
Traversable
Can also be derived by GHC (DeriveTraversable extension).
gtraverse :: (Generic1 f, Traversable (Rep1 f), Applicative m) => (a -> m b) -> f a -> m (f b) Source #
Generic traverse.
instanceTraversableMyTypeF wheretraverse=gtraverse
gsequenceA :: (Generic1 f, Traversable (Rep1 f), Applicative m) => f (m a) -> m (f a) Source #
Applicative
Alternative
Eq1
gliftEq :: (Generic1 f, Eq1 (Rep1 f)) => (a -> b -> Bool) -> f a -> f b -> Bool Source #
Generic liftEq.
Ord1
gliftCompare :: (Generic1 f, Ord1 (Rep1 f)) => (a -> b -> Ordering) -> f a -> f b -> Ordering Source #
Generic liftCompare.
Read1
gliftReadPrec :: (Generic1 f, GRead1 (Rep1 f)) => ReadPrec a -> ReadPrec [a] -> ReadPrec (f a) Source #
Generic liftReadPrec.
Show1
gliftShowsPrec :: (Generic1 f, GShow1 (Rep1 f)) => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> f a -> ShowS Source #
Generic liftShowsPrec.
Fields wrappers for deriving
A newtype whose instances for simple classes (Eq, Ord, Read, Show)
use higher-kinded class instances for f (Eq1, Ord1, Read1, Show1).
Instances
| Eq1 f => Eq1 (Id1 f) Source # | |
| Ord1 f => Ord1 (Id1 f) Source # | |
Defined in Generic.Data.Internal.Resolvers | |
| Read1 f => Read1 (Id1 f) Source # | |
Defined in Generic.Data.Internal.Resolvers | |
| Show1 f => Show1 (Id1 f) Source # | |
| (Eq1 f, Eq a) => Eq (Id1 f a) Source # | |
| (Ord1 f, Ord a) => Ord (Id1 f a) Source # | |
Defined in Generic.Data.Internal.Resolvers | |
| (Read1 f, Read a) => Read (Id1 f a) Source # | |
| (Show1 f, Show a) => Show (Id1 f a) Source # | |
A newtype with trivial instances, that considers
every value equivalent to every other one,
and shows as just "_".
A higher-kinded version of Opaque.
Instances
| Eq1 (Opaque1 f) Source # | All equal. |
| Ord1 (Opaque1 f) Source # | All equal. |
Defined in Generic.Data.Internal.Resolvers | |
| Show1 (Opaque1 f) Source # | Shown as |
| Eq (Opaque1 f a) Source # | All equal. |
| Ord (Opaque1 f a) Source # | All equal. |
Defined in Generic.Data.Internal.Resolvers | |
| Show (Opaque1 f a) Source # | Shown as |
Carriers of generic instances
newtype Generically a Source #
Type with instances derived via Generic.
Constructors
| Generically | |
Fields
| |
Instances
newtype GenericProduct a Source #
Product type with generic instances of Semigroup and Monoid.
This is similar to Generically in most cases, but
GenericProduct also works for types T with deriving
via , where GenericProduct UU is a generic product type coercible to,
but distinct from T. In particular, U may not have an instance of
Semigroup, which Generically requires.
Example
>>>:set -XDeriveGeneric -XDerivingVia>>>data Point a = Point a a deriving Generic>>>:{newtype Vector a = Vector (Point a) deriving (Semigroup, Monoid) via GenericProduct (Point (Sum a)) :}
If it were via instead, then
Generically (Point (Sum a))Vector's mappend (the Monoid method) would be defined as Point's
( (the <>)Semigroup method), which might not exist, or might not be
equivalent to Vector's generic Semigroup instance, which would be
unlawful.
Constructors
| GenericProduct | |
Fields
| |
Instances
| Generic a => Generic (GenericProduct a) Source # | |
Defined in Generic.Data.Internal.Generically Associated Types type Rep (GenericProduct a) :: Type -> Type # Methods from :: GenericProduct a -> Rep (GenericProduct a) x # to :: Rep (GenericProduct a) x -> GenericProduct a # | |
| (AssertNoSum Semigroup a, Generic a, Semigroup (Rep a ())) => Semigroup (GenericProduct a) Source # | |
Defined in Generic.Data.Internal.Generically Methods (<>) :: GenericProduct a -> GenericProduct a -> GenericProduct a # sconcat :: NonEmpty (GenericProduct a) -> GenericProduct a # stimes :: Integral b => b -> GenericProduct a -> GenericProduct a # | |
| (AssertNoSum Semigroup a, Generic a, Monoid (Rep a ())) => Monoid (GenericProduct a) Source # | |
Defined in Generic.Data.Internal.Generically Methods mempty :: GenericProduct a # mappend :: GenericProduct a -> GenericProduct a -> GenericProduct a # mconcat :: [GenericProduct a] -> GenericProduct a # | |
| type Rep (GenericProduct a) Source # | |
Defined in Generic.Data.Internal.Generically | |
newtype FiniteEnumeration a Source #
Type with Enum instance derived via Generic with FiniteEnum option.
Constructors
| FiniteEnumeration | |
Fields
| |
Instances
newtype Generically1 f a Source #
Type with instances derived via Generic1.
Constructors
| Generically1 | |
Fields
| |
Instances
Newtype
Generic pack/unpack.
class (Generic a, Coercible a (Old a), Newtype' a) => Newtype a Source #
type Old a = GOld (Rep a) Source #
The type wrapped by a newtype.
newtype Foo = Foo { bar :: Bar } deriving Generic
-- Old Foo ~ Bar
Generic coercions
gcoerce :: (Generic a, Generic b, Coercible (Rep a) (Rep b)) => a -> b Source #
Convert between types with representationally equivalent generic representations.
gcoerceBinop :: (Generic a, Generic b, Coercible (Rep a) (Rep b)) => (a -> a -> a) -> b -> b -> b Source #
Compose gcoerce with a binary operation.
Accessing metadata
Using TypeApplications.
Datatype
gdatatypeName :: forall a. (Generic a, GDatatype (Rep a)) => String Source #
Name of the first data constructor in a type as a string.
>>>gdatatypeName @(Maybe Int)"Maybe"
gmoduleName :: forall a. (Generic a, GDatatype (Rep a)) => String Source #
Name of the module where the first type constructor is defined.
>>>gmoduleName @(ZipList Int)"Control.Applicative"
gpackageName :: forall a. (Generic a, GDatatype (Rep a)) => String Source #
Name of the package where the first type constructor is defined.
>>>gpackageName @(Maybe Int)"base"
gisNewtype :: forall a. (Generic a, GDatatype (Rep a)) => Bool Source #
True if the first type constructor is a newtype.
>>>gisNewtype @[Int]False>>>gisNewtype @(ZipList Int)True
Generic representations that contain datatype metadata.
Minimal complete definition
Instances
| Datatype d => GDatatype (M1 D d f :: k -> Type) Source # | |
Defined in Generic.Data.Internal.Meta Methods gDatatypeName :: String Source # gModuleName :: String Source # gPackageName :: String Source # gIsNewtype :: Bool Source # | |
Constructor
gconName :: forall a. Constructors a => a -> String Source #
Name of the first constructor in a value.
>>>gconName (Just 0)"Just"
gconFixity :: forall a. Constructors a => a -> Fixity Source #
The fixity of the first constructor.
>>>gconFixity (Just 0)Prefix>>>gconFixity ([] :*: id)Infix RightAssociative 6
gconIsRecord :: forall a. Constructors a => a -> Bool Source #
True if the constructor is a record.
>>>gconIsRecord (Just 0)False>>>gconIsRecord (Sum 0) -- Note: newtype Sum a = Sum { getSum :: a }True
gconNum :: forall a. Constructors a => Int Source #
Number of constructors.
>>>gconNum @(Maybe Int)2
gconIndex :: forall a. Constructors a => a -> Int Source #
Index of a constructor.
>>>gconIndex Nothing0>>>gconIndex (Just "test")1
class (Generic a, GConstructors (Rep a)) => Constructors a Source #
Constraint synonym for Generic and GConstructors.
Instances
| (Generic a, GConstructors (Rep a)) => Constructors a Source # | |
Defined in Generic.Data.Internal.Meta | |
class GConstructors r Source #
Generic representations that contain constructor metadata.
Minimal complete definition
Instances
| (GConstructors f, GConstructors g) => GConstructors (f :+: g :: k -> Type) Source # | |
| Constructor c => GConstructors (M1 C c f :: k -> Type) Source # | |
| GConstructors f => GConstructors (M1 D c f :: k -> Type) Source # | |
Constructor tags
An opaque identifier for a constructor.
conId :: forall a. Constructors a => a -> ConId a Source #
Identifier of a constructor.
conIdToInt :: forall a. ConId a -> Int Source #
Index of a constructor, given its identifier.
See also gconIndex.
conIdToString :: forall a. Constructors a => ConId a -> String Source #
Name of a constructor. See also gconName.
conIdEnum :: forall a. Constructors a => [ConId a] Source #
conIdNamed :: forall s a. ConIdNamed s a => ConId a Source #
Get a ConId by name.
>>>conIdNamed @"Nothing" :: ConId (Maybe Int)ConId 0>>>conIdNamed @"Just" :: ConId (Maybe Int)ConId 1
class (Generic a, KnownNat (ConIdNamed' n a)) => ConIdNamed n a Source #
Constraint synonym for generic types a with a constructor named n.
Instances
| (Generic a, KnownNat (ConIdNamed' n a)) => ConIdNamed n a Source # | |
Defined in Generic.Data.Internal.Meta | |
Using type families
type family MetaDataName (m :: Meta) :: Symbol where ... Source #
Name of the data type (MetaData).
Equations
| MetaDataName (MetaData n _m _p _nt) = n |
type family MetaDataModule (m :: Meta) :: Symbol where ... Source #
Name of the module where the data type is defined (MetaData)
Equations
| MetaDataModule (MetaData _n m _p _nt) = m |
type family MetaDataPackage (m :: Meta) :: Symbol where ... Source #
Name of the package where the data type is defined (MetaData)
Equations
| MetaDataPackage (MetaData _n _m p _nt) = p |
type family MetaDataNewtype (m :: Meta) :: Bool where ... Source #
True if the data type is a newtype (MetaData).
Equations
| MetaDataNewtype (MetaData _n _m _p nt) = nt |
type family MetaConsName (m :: Meta) :: Symbol where ... Source #
Name of the constructor (MetaCons).
Equations
| MetaConsName (MetaCons n _f _s) = n |
type family MetaConsFixity (m :: Meta) :: FixityI where ... Source #
Fixity of the constructor (MetaCons).
Equations
| MetaConsFixity (MetaCons _n f s) = f |
type family MetaConsRecord (m :: Meta) :: Bool where ... Source #
True for a record constructor (MetaCons).
Equations
| MetaConsRecord (MetaCons _n _f s) = s |
type family MetaSelNameM (m :: Meta) :: Maybe Symbol where ... Source #
Just the name of the record field, if it is one (MetaSel).
Equations
| MetaSelNameM (MetaSel mn _su _ss _ds) = mn |
type family MetaSelName (m :: Meta) :: Symbol where ... Source #
Name of the record field; undefined for non-record fields (MetaSel).
Equations
| MetaSelName (MetaSel (Just n) _su _ss _ds) = n |
type family MetaSelUnpack (m :: Meta) :: SourceUnpackedness where ... Source #
Unpackedness annotation of a field (MetaSel).
Equations
| MetaSelUnpack (MetaSel _mn su _ss _ds) = su |
type family MetaSelSourceStrictness (m :: Meta) :: SourceStrictness where ... Source #
Strictness annotation of a field (MetaSel).
Equations
| MetaSelSourceStrictness (MetaSel _mn _su ss _ds) = ss |
type family MetaSelStrictness (m :: Meta) :: DecidedStrictness where ... Source #
Inferred strictness of a field (MetaSel).
Equations
| MetaSelStrictness (MetaSel _mn _su _ss ds) = ds |