- class Eq1 p where
- data RepWitness rep a where
- MkRepWitness :: Is rep a => RepWitness rep a

- isWitnessRepresentative :: RepWitness rep a -> rep a
- class Eq1 rep => Representative rep where
- getRepWitness :: rep a -> RepWitness rep a

- withRepresentative :: forall rep r. Representative rep => (forall a. Is rep a => rep a -> r) -> forall b. rep b -> r
- class Representative rep => Is rep a where
- representative :: rep a

- getRepresentative :: Is rep a => a -> rep a
- rerepresentative :: Is rep a => p a -> rep a
- mkAny :: Is rep a => a -> Any rep
- mkAnyF :: Is rep a => f a -> AnyF rep f

# Documentation

data RepWitness rep a whereSource

MkRepWitness :: Is rep a => RepWitness rep a |

SimpleWitness w => SimpleWitness (RepWitness w) | |

Representative (RepWitness rep) | |

Eq1 (RepWitness rep) | |

Is rep a => Is (RepWitness rep) a |

isWitnessRepresentative :: RepWitness rep a -> rep aSource

class Eq1 rep => Representative rep whereSource

getRepWitness :: rep a -> RepWitness rep aSource

Every value is an instance of `Is`

.

withRepresentative :: forall rep r. Representative rep => (forall a. Is rep a => rep a -> r) -> forall b. rep b -> rSource

class Representative rep => Is rep a whereSource

If two representatives have the same type, then they have the same value.

representative :: rep aSource

The representative value for type `a`

.

getRepresentative :: Is rep a => a -> rep aSource

rerepresentative :: Is rep a => p a -> rep aSource