Module Typerep_lib.Type_generic

module Variant_and_record_intf : module type of Variant_and_record_intf
module Helper : functor (A : Variant_and_record_intf.S) -> functor (B : Variant_and_record_intf.S) -> sig ... end
module type Named = sig ... end
module type Computation = sig ... end
module Make_named_for_closure : functor (X : sig ... end) -> Named with type 'a computation := 'a X.t

Not all computations are arrow types. For example:

module Ident : sig ... end
module type S = sig ... end
module Make : functor (X : sig ... end) -> S with type 'a t = 'a X.t

The name is used for debug information only in case of Broken_dependency. The required is to handle dependencies between generics at runtime. Example: if X is the module given to build a generic computation G that depends on three other computation A,B,C then X.required shall be A.ident ; B.ident ; C.ident