У меня есть библиотека, в которой общие типы данных определены в модуле только для подписи (копирование этой подписи в реализацию не имеет смысла, поскольку она не содержит никаких функций):
(* b.mli *)
type bar = A of int | B of float
(* a.ml: *)
let foo = function B.A i -> B.A (i+1)
| B.B f -> B.B (f +. 1.)
(* c.mllib *)
A
B
В приведенной выше настройке ocamlbuild не может создать библиотеку с довольно неожиданной ошибкой:
choeger@daishi /tmp/test % ocamlbuild c.cmxa
Solver failed:
Ocamlbuild cannot find or build c.ml. A file with such a name would usually be a source file. I suspect you have given a wrong target name to Ocamlbuild.
Я могу построить без указания B внутри файла mllib, но тогда панель типов становится абстрактной (что не предназначено). Есть ли способ включить подпись с помощью ocamlbuild?