我正在尝试理解关于ocaml模块及其编译的具体事项:
我是否被迫重新声明已在.mli特定.ml实现中声明的类型?
举个例子:
(* foo.mli *)
type foobar = Bool of bool | Float of float | Int of int
(* foo.ml *)
type baz = foobar option
Run Code Online (Sandbox Code Playgroud)
根据我对接口/实现的正常思考方式,这应该没问题,但它说
错误:未绑定的类型构造函数foobar
在尝试编译时
ocamlc -c foo.mli
ocamlc -c foo.ml
Run Code Online (Sandbox Code Playgroud)
当然,如果我申报错误消失foobar里面foo.ml太多,但它似乎是一个复杂的方式,因为我要保持同步的东西在每一个变化.
有没有办法避免这种冗余,或者我每次都被迫重新声明类型?
提前致谢