我最近正在阅读一个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中呢?
答案 0 :(得分:11)
#use a.ml
执行a.ml中的每个语句,就像您直接在toplevel中键入这些语句一样。因此,您没有定义module A
,因此您的其他文件不能包含A.foo
之类的内容。如果你想要module A
,你必须首先编译a.ml,然后编译#load a.cmo
。