Generics.SOP

# Codes and interpretations

class Generic a

type Rep a

# n-ary datatypes

data NP

data NS

data SOP f xss

unSOP

data POP f xss

unPOP

# Metadata

data DatatypeInfo

moduleName

datatypeName

constructorInfo

data ConstructorInfo

constructorName

data FieldInfo

fieldName

class HasDatatypeInfo a

type DatatypeName

type ModuleName

type ConstructorName

type FieldName

data Associativity

type Fixity

# Combinators

## Constructing products

class HPure h

## Destructing products

hd

tl

type Projection f xs

projections

shiftProjection

## Application

data (f -.-> g) a

fn

fn_2

fn_3

fn_4

type family Prod (h :: (k -> *) -> l -> *) :: (k -> *) -> l -> *

class HAp h

## Lifting / mapping

hliftA

hliftA2

hliftA3

hcliftA

hcliftA2

hcliftA3

hmap

hzipWith

hzipWith3

hcmap

hczipWith

hczipWith3

## Constructing sums

type Injection f xs

injections

shift

shiftInjection

type family UnProd (h :: (k -> *) -> l -> *) :: (k -> *) -> l -> *

class HApInjs h

apInjs_NP

apInjs_POP

## Destructing sums

unZ

class HIndex h

## Dealing with ``All` c`

hcliftA'

hcliftA2'

hcliftA3'

## Collapsing

type family CollapseTo (h :: (k -> *) -> l -> *) (x :: *) :: *

class HCollapse h

## Sequencing

class HSequence h

hsequence

hsequenceK

## Expanding sums to products

class HExpand h

## Partial operations

fromList

# Utilities

## Basic functors

data K a b

unK

data I a

unI

data (f :.: g) p

unComp

### Mapping functions

mapII

mapIK

mapKI

mapKK

mapIII

mapIIK

mapIKI

mapIKK

mapKII

mapKIK

mapKKI

mapKKK

## Mapping constraints

class All f xs

class All2 f xss

class Compose f g x

class And f g x

class Top x

type family AllN (h :: (k -> *) -> l -> *) (c :: k -> Constraint) :: l -> Constraint

## Singletons

data SList

class SListI xs

type SListI2

type Sing

class SingI xs

### Shape of type-level lists

data Shape

shape

lengthSList

lengthSing

## Re-exports

data Proxy k t