Generics.SOP.Classes

# Generalized applicative functor structure

## Generalized `pure`

class HPure h

## Generalized `<*>`

data (f -.-> g) a

fn

fn_2

fn_3

fn_4

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

class HAp h

## Derived functions

hliftA

hliftA2

hliftA3

hmap

hzipWith

hzipWith3

hcliftA

hcliftA2

hcliftA3

hcmap

hczipWith

hczipWith3

# Collapsing homogeneous structures

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

class HCollapse h

# Sequencing effects

class HSequence h

## Derived functions

hsequence

hsequenceK

# Indexing into sums

class HIndex h

# Applying all injections

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

class HApInjs h

# Expanding sums to products

class HExpand h