This is especially useful with first class modules as you can do
module rec M : sig
module type Map = sig
type key
(* this is the bad recursive bit *)
val clone : unit -> (module M.Map with type key = key)
end
end = M
This is especially useful with first class modules as you can do
module rec M : sig
module type Map = sig
type key
(* this is the bad recursive bit *)
val clone : unit -> (module M.Map with type key = key)
end
end = M