Eq.MakeFunctor building an implementation of EQ given a type with a structural equality function.
module T : sig ... endtype t = T.tThe type of elements to check for equality.
equal a b is true if and only if a and b are equal. This should satisfy the following properties:
equal a a = trueequal a b is equivalent to equal b aequal a b = true and equal b c = true, then equal a c = true