GHC.Generics

# Introduction

## Representing datatypes

## Derived and fundamental representation types

### Individual fields of constructors: `K1`

### Meta information: `M1`

### Additional generic representation type constructors

#### Empty datatypes: `V1`

#### Constructors without fields: `U1`

### Representation of types with many constructors or many fields

## Defining datatype-generic functions

### Definition of the generic representation types

### Generic instances

### The wrapper and generic default

### Omitting generic instances

## Generic constructor classes

### The `Generic1` class

### Representation of `* -> *` types

# Generic representation types

data V1 p

data U1 p

data Par1 p

data Rec1 f p

data K1 i c p

data M1 i c f p

data (f :+: g) p

data (f :*: g) p

data (f :.: g) p

## Synonyms for convenience

type Rec0

type Par0

data R

data P

type D1

type C1

type S1

data D

data C

data S

# Meta-information

class Datatype d

class Constructor c

class Selector s

data NoSelector

data Fixity

data Associativity

data Arity

prec

# Generic type classes

class Generic a

class Generic1 f