sig
	type t
	type u = t -> t
	val f : u
end

becomes

sig (A) (* A is a binder referring to the whole signature *)
	type t = A.t
	type u = A.t -> A.t
	val f : A.u
end

Same with structures.

modules via translation

F-ing approach to modules: elaboration of modules into F-omega Paper Fulfilling OCaml Modules with Transparency proposes a new elaboration target, M-omega.