在OCaml utop中使用多个模块

时间:2013-12-14 03:05:19

标签: ocaml ocamlbuild ocamlfind

我最近正在阅读一个OCaml项目,我想把源文件放在utop中,这样我就可以做一些实验了。
假设我有两个文件 amodule.ml bmodule.ml
bmodule.ml 将使用 amodule.ml 中定义的函数,例如 bmodule 使用 Amodule.anyfunction()其中 anyfunction() amodule.ml 中定义。
我想把它们都放在utop中:

#directory "/directory contain amodule.ml and bmodule.ml"
#use "amodule.ml"
#use "bmodule.ml"

这不起作用,因为 Amodule 是基于 amodule.ml 文件的模块名称,而utop不知道这些事情,我想。登记/> 那么如何在不改变文件内容的情况下将这些文件放在utop中呢?

1 个答案:

答案 0 :(得分:11)

#use a.ml执行a.ml中的每个语句,就像您直接在toplevel中键入这些语句一样。因此,您没有定义module A,因此您的其他文件不能包含A.foo之类的内容。如果你想要module A,你必须首先编译a.ml,然后编译#load a.cmo