我有一个库,通用数据类型是在仅签名模块中定义的(将该签名复制到实现没有意义,因为它不包含任何功能):
(* 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包含签名?