我想在我的源代码树的不同目录中为两个 .ml 源文件提供相同的名称,但 OCaml 文档指出文件 A.ml 导出为顶层模块 A = struct ... end。如果我有两个文件 X/A.ml 和 Y/A.ml,我如何从 B.ml 中引用它们?
模块可以包含模块,即可以具有模块的层次结构。从 B.ml 的角度来看,您可以看到两个名为X.A和的模块Y.A。它们甚至可以都有一个名为 的函数foo,这些函数将被视为X.A.foo和Y.A.foo。
请注意,如果您open同时使用 moduleX和Y,则 module AfromY将会隐藏 module Afrom X。
这是从命名空间的角度来看的。现在,关于源树。一种方法是拥有这些文件:
文件 x.ml 是自动生成的,仅包含以下内容:
module A = struct
(*The contents of x/a.ml is included here*)
end
Run Code Online (Sandbox Code Playgroud)
同样,对于 y.ml 有几个预处理器能够包含文件:cpp、camlp4、camlp5、camlmix...
这套自动生成的文件(并在每次源更改时重新生成)不是很令人满意,我会看看其他答案。
你也可以看看ocamlc -pack,但是我很久以前尝试的时候出现了ocamldoc无法获得 x/a.ml 和 y/a.ml 的问题。因此,在选择工具之前请先检查一下这一点。
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |