Hello, is there way to define module with similar interface: module R = struct type topicf = (module F : I) -> F.message -> F.message and topic = { func: topicf; name: string } ... end it is possible in case I want to define function with similar signature I can declare used types by: let test (type message') (module M : I with type message = message') (v: message') : message' = ... But how should I create such type in module? WBR, ssp