GEq -package:some

Class of generic representation types that can be checked for equality.
A class for type-contexts which contain enough information to (at least in some cases) decide the equality of types occurring within them.
Generic equality: an alternative to "deriving Eq"
Generic (==).
instance Eq MyType where
(==) = geq
A Predicate that accepts anything greater than or equal to the given value.
>>> accept (geq 5) 4
False

>>> accept (geq 5) 5
True

>>> accept (geq 5) 6
True
Produce a witness of type-equality, if one exists. A handy idiom for using this would be to pattern-bind in the Maybe monad, eg.:
extract :: GEq tag => tag a -> DSum tag -> Maybe a
extract t1 (t2 :=> x) = do
Refl <- geq t1 t2
return x
Or in a list comprehension:
extractMany :: GEq tag => tag a -> [DSum tag] -> [a]
extractMany t1 things = [ x | (t2 :=> x) <- things, Refl <- maybeToList (geq t1 t2)]
(Making use of the DSum type from Data.Dependent.Sum in both examples)
A pointer to an equality checking function on the C side.