1

我刚开始学习Ocaml。我在 Ubuntu 上使用可视代码作为我的 IDE,并且安装了 OCaml 扩展和 merlin。

我有以下问题 -

我的工作区文件夹仅包含 2 个文件:a.ml 和 b.ml。

在 a.ml 文件中,我定义了一个名为“COOL”的模块,在 b.ml 文件中我写道:

~ b.ml ~

open COOL;;

我收到一条错误消息,提示“未绑定模块 COOL merlin”

有没有办法让它看到文件 a.ml 上的模块?我尝试寻找解决方案,我看到了 makefile 和 .merlin 和 B 构建的东西,但我不明白,除了我提到的 2 个文件,我什么都没有。如果有人能告诉我应该做什么才能让这个小例子起作用,我会很高兴。

4

1 回答 1

3

tl; dr:执行ocamlc -c a.ml(或任何您的编译命令)以生成a.cmimerlin 将用于获取模块中定义的符号列表的文件A

除了正如 glennsl 提到的那样,在b.ml您的模块中确实被命名A.COOL(除非您open A之前),关键是,据我所知,仅观看当前正在编辑的文件,即在您的情况下。为了能够访问外部符号,因此您需要编译其他文件(或者至少编译它们的对应文件,如果它们存在的话),以使相关文件可用于 merlin。open COOLmerlinb.ml.mli.cmi

这在描述构建路径的文档段落中是隐含的,它说“[merlin] 需要知道在哪里可以找到项目其他模块的 cmi 文件”,即这些文件首先需要存在。

于 2019-11-20T14:01:33.463 回答