Functor
module type S = { ... };
module type S1 = (_: S) => S;
module F1: (Arg: S) => S;
module F2: (Arg: S) => S with type t = Arg.t;
module F3: (Arg: S) => { ... };
module F4: (Arg: S) => S;