my_module.mli:
module Make
(Something: SomeModule.S) = sig
val f: t->t
(*...*)
end
my_module.ml:
module Make
(Something: SomeModule.S) = struct
let f t = t
(*...*)
end
ОК. Предположим, что я хочу создать экземпляр my_module, выполнив My_module.Make()
. Я должен передать Something: SomeModule.S
.
Один из способов, который я нашел, это сделать:
нечто.mli
include SomeModule.S
val some_module_fn_1: t->t
что-то.ml
let some_module_fn_1 t = t
Теперь я думаю, что могу создать новый файл:
main.ml
let myModuleImpl = MyModule.Make(Something)
myModuleImpl.f 0
Но действительно ли мне нужно создавать отдельные файлы something.mli
и something.ml
? Разве я не могу просто создать их реализации в main.ml
?