Могу ли я реализовать модули OCaml с `let` или мне нужно создать файл для него? - PullRequest
0 голосов
/ 27 апреля 2020

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?

...