module type S : sig ... endmodule Make_input : functor (Input : sig ... end) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = Input.t ‑> 'a) -> S with type 'a t = Input.t ‑> 'amodule Make_output : functor (Output : sig ... end) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = 'a ‑> Output.t) -> S with type 'a t = 'a ‑> Output.tmodule Make_non_arrow_output : functor (Output : sig ... end) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = Output.t) -> S with type 'a t = Output.tmodule Make_reader : functor (Builder : sig ... end) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = 'a Builder.t) -> S with type 'a t = 'a X.tmodule Make_writer : functor (Builder : sig ... end) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = 'a Builder.t) -> S with type 'a t = 'a X.tmodule type Adapter : sig ... endmodule Make_advanced : functor (A : Adapter) -> functor (X : Typerep_lib.Std.Type_generic.Computation with type 'a t = 'a A.t) -> S with type 'a t = 'a X.tmodule Input_adapter : functor (Input : sig ... end) -> Adapter with type 'a t = Input.t ‑> 'amodule Output_adapter : functor (Output : sig ... end) -> Adapter with type 'a t = 'a ‑> Output.tmodule Non_arrow_output_adapter : functor (Output : sig ... end) -> Adapter with type 'a t = Output.tmodule Reader_adapter : functor (Builder : sig ... end) -> Adapter with type 'a t = 'a Builder.tmodule Writer_adapter : functor (Builder : sig ... end) -> Adapter with type 'a t = 'a Builder.t