generics-sop-0.4.0.1: Generic Programming using True Sums of Products

Safe HaskellNone
LanguageHaskell2010

Generics.SOP.Metadata

Contents

Description

Metadata about what a datatype looks like

In generics-sop, the metadata is completely independent of the main universe. Many generic functions will use this metadata, but other don't, and yet others might need completely different metadata.

This module defines a datatype to represent standard metadata, i.e., names of the datatype, its constructors, and possibly its record selectors. Metadata descriptions are in general GADTs indexed by the code of the datatype they're associated with, so matching on the metadata will reveal information about the shape of the datatype.

Synopsis

Documentation

type Fixity = Int Source #

The fixity of an infix constructor.

type FieldName = String Source #

The name of a field / record selector.

type ConstructorName = String Source #

The name of a data constructor.

type ModuleName = String Source #

The name of a module.

type DatatypeName = String Source #

The name of a datatype.

data FieldInfo :: Type -> Type where Source #

For records, this functor maps the component to its selector name.

Constructors

FieldInfo :: FieldName -> FieldInfo a 
Instances
Functor FieldInfo Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

fmap :: (a -> b) -> FieldInfo a -> FieldInfo b

(<$) :: a -> FieldInfo b -> FieldInfo a

Eq (FieldInfo a) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

(==) :: FieldInfo a -> FieldInfo a -> Bool

(/=) :: FieldInfo a -> FieldInfo a -> Bool

Ord (FieldInfo a) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

compare :: FieldInfo a -> FieldInfo a -> Ordering

(<) :: FieldInfo a -> FieldInfo a -> Bool

(<=) :: FieldInfo a -> FieldInfo a -> Bool

(>) :: FieldInfo a -> FieldInfo a -> Bool

(>=) :: FieldInfo a -> FieldInfo a -> Bool

max :: FieldInfo a -> FieldInfo a -> FieldInfo a

min :: FieldInfo a -> FieldInfo a -> FieldInfo a

Show (FieldInfo a) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

showsPrec :: Int -> FieldInfo a -> ShowS

show :: FieldInfo a -> String

showList :: [FieldInfo a] -> ShowS

data ConstructorInfo :: [Type] -> Type where Source #

Metadata for a single constructors.

This is indexed by the product structure of the constructor components.

Instances
All (Compose Eq FieldInfo) xs => Eq (ConstructorInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

(==) :: ConstructorInfo xs -> ConstructorInfo xs -> Bool

(/=) :: ConstructorInfo xs -> ConstructorInfo xs -> Bool

(All (Compose Eq FieldInfo) xs, All (Compose Ord FieldInfo) xs) => Ord (ConstructorInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

All (Compose Show FieldInfo) xs => Show (ConstructorInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

showsPrec :: Int -> ConstructorInfo xs -> ShowS

show :: ConstructorInfo xs -> String

showList :: [ConstructorInfo xs] -> ShowS

data DatatypeInfo :: [[Type]] -> Type where Source #

Metadata for a datatype.

A value of type DatatypeInfo c contains the information about a datatype that is not contained in Code c. This information consists primarily of the names of the datatype, its constructors, and possibly its record selectors.

The constructor indicates whether the datatype has been declared using newtype or not.

Instances
All (Compose Eq ConstructorInfo) xs => Eq (DatatypeInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

(==) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

(/=) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

(All (Compose Eq ConstructorInfo) xs, All (Compose Ord ConstructorInfo) xs) => Ord (DatatypeInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

compare :: DatatypeInfo xs -> DatatypeInfo xs -> Ordering

(<) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

(<=) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

(>) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

(>=) :: DatatypeInfo xs -> DatatypeInfo xs -> Bool

max :: DatatypeInfo xs -> DatatypeInfo xs -> DatatypeInfo xs

min :: DatatypeInfo xs -> DatatypeInfo xs -> DatatypeInfo xs

All (Compose Show ConstructorInfo) xs => Show (DatatypeInfo xs) Source # 
Instance details

Defined in Generics.SOP.Metadata

Methods

showsPrec :: Int -> DatatypeInfo xs -> ShowS

show :: DatatypeInfo xs -> String

showList :: [DatatypeInfo xs] -> ShowS

moduleName :: DatatypeInfo xss -> ModuleName Source #

The module name where a datatype is defined.

Since: 0.2.3.0

datatypeName :: DatatypeInfo xss -> DatatypeName Source #

The name of a datatype (or newtype).

Since: 0.2.3.0

constructorInfo :: DatatypeInfo xss -> NP ConstructorInfo xss Source #

The constructor info for a datatype (or newtype).

Since: 0.2.3.0

constructorName :: ConstructorInfo xs -> ConstructorName Source #

The name of a constructor.

Since: 0.2.3.0

fieldName :: FieldInfo a -> FieldName Source #

The name of a field.

Since: 0.2.3.0

re-exports

data Associativity #

Instances
Bounded Associativity 
Instance details

Defined in GHC.Generics

Enum Associativity 
Instance details

Defined in GHC.Generics

Eq Associativity 
Instance details

Defined in GHC.Generics

Data Associativity 
Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Associativity -> c Associativity

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Associativity

toConstr :: Associativity -> Constr

dataTypeOf :: Associativity -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Associativity)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Associativity)

gmapT :: (forall b. Data b => b -> b) -> Associativity -> Associativity

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Associativity -> r

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Associativity -> r

gmapQ :: (forall d. Data d => d -> u) -> Associativity -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Associativity -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Associativity -> m Associativity

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Associativity -> m Associativity

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Associativity -> m Associativity

Ord Associativity 
Instance details

Defined in GHC.Generics

Read Associativity 
Instance details

Defined in GHC.Generics

Methods

readsPrec :: Int -> ReadS Associativity

readList :: ReadS [Associativity]

readPrec :: ReadPrec Associativity

readListPrec :: ReadPrec [Associativity]

Show Associativity 
Instance details

Defined in GHC.Generics

Methods

showsPrec :: Int -> Associativity -> ShowS

show :: Associativity -> String

showList :: [Associativity] -> ShowS

Ix Associativity 
Instance details

Defined in GHC.Generics

Generic Associativity 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Associativity :: Type -> Type

SingKind Associativity 
Instance details

Defined in GHC.Generics

Associated Types

type DemoteRep Associativity :: Type

Methods

fromSing :: Sing a -> DemoteRep Associativity

HasDatatypeInfo Associativity Source # 
Instance details

Defined in Generics.SOP.Instances

Generic Associativity Source # 
Instance details

Defined in Generics.SOP.Instances

Associated Types

type Code Associativity :: [[Type]] Source #

SingI LeftAssociative 
Instance details

Defined in GHC.Generics

Methods

sing :: Sing LeftAssociative

SingI RightAssociative 
Instance details

Defined in GHC.Generics

Methods

sing :: Sing RightAssociative

SingI NotAssociative 
Instance details

Defined in GHC.Generics

Methods

sing :: Sing NotAssociative

type Rep Associativity 
Instance details

Defined in GHC.Generics

type Rep Associativity = D1 (MetaData "Associativity" "GHC.Generics" "base" False) (C1 (MetaCons "LeftAssociative" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "RightAssociative" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "NotAssociative" PrefixI False) (U1 :: Type -> Type)))
type DemoteRep Associativity 
Instance details

Defined in GHC.Generics

type DemoteRep Associativity = Associativity
data Sing (a :: Associativity) 
Instance details

Defined in GHC.Generics

data Sing (a :: Associativity) where
type DatatypeInfoOf Associativity Source # 
Instance details

Defined in Generics.SOP.Instances

type DatatypeInfoOf Associativity = ADT "GHC.Generics" "Associativity" (Constructor "LeftAssociative" ': (Constructor "RightAssociative" ': (Constructor "NotAssociative" ': ([] :: [ConstructorInfo]))))
type Code Associativity Source # 
Instance details

Defined in Generics.SOP.Instances

type Code Associativity = ([] :: [Type]) ': (([] :: [Type]) ': (([] :: [Type]) ': ([] :: [[Type]])))