共通のデータ型が署名のみのモジュールで定義されているライブラリがあります(機能が含まれていないため、その署名を実装にコピーしても意味がありません)。
(* 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.
mllib ファイル内で B を指定せずにビルドできますが、タイプ バーが抽象化されます (これは意図したものではありません)。ocamlbuild を使用して署名を含める方法はありますか?