Module Functor

module type S = sig ... end
module type S1 = functor (_ : S) -> S
module F1 : functor (Arg : S) -> S
module F2 : functor (Arg : S) -> S with type t = Arg.t
module F3 : functor (Arg : S) -> sig ... end
module F4 : functor (Arg : S) -> S