class TypeEquals :: forall k. k -> k -> Constraint
class (Coercible a b) <= TypeEquals a b | a -> b, b -> a where
This type class asserts that types
The functional dependencies and the single instance below will force the two type arguments to unify when either one is known.
Note: any instance will necessarily overlap with
refl below, so instances of this class should
not be defined in libraries.
proof :: forall p. p a -> p b
TypeEquals a a