module type S_common = sig ... endmodule type S_plain = sig ... endmodule type S_not_binable = sig ... endmodule type S = sig ... endmodule Make_plain : functor (M : sig ... end) -> S_plain with type t := M.tUsed for making an Identifiable module. Here's an example:
module Make_and_derive_hash_fold_t : functor (M : sig ... end) -> S with type t := M.tmodule Make_using_comparator : functor (M : sig ... end) -> S with type t := M.t with type comparator_witness := M.comparator_witnessmodule Make_using_comparator_and_derive_hash_fold_t : functor (M : sig ... end) -> S with type t := M.t with type comparator_witness := M.comparator_witnessmodule Extend : functor (M : Base.Identifiable.S) -> functor (B : sig ... end) -> S with type t := M.t with type comparator_witness := M.comparator_witness