class 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.
TypeEquals a a