module type COMMON = sig ... endmodule Common : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> COMMON with type hash := Hash.t and type reference := Reference.tmodule type DECODER = sig ... endmodule Decoder : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> functor (Common : COMMON with type hash := Hash.t and type reference := Reference.t) -> DECODER with module Hash := Hash and module Reference := Reference and module Common := CommonThe functor to make the Decoder by a specific hash implementation.
module type ENCODER = sig ... endmodule Encoder : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> functor (Common : COMMON with type hash := Hash.t and type reference := Reference.t) -> ENCODER with module Hash := Hash and module Reference := Reference and module Common := CommonThe functor to make the Encoder by a specific hash implementation.
module type CLIENT = sig ... end