2013-12-14 61 views
7

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

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

这不起作用,因为Amodule是在模块名称基amodule.ml文件和UTOP不知道这些东西,我想。
因此,如何我可以把这些文件放在UTOP不改变文件内容?

+0

您是否尝试过'cd'到amodule.ml和bmodule.ml所在的文件夹,然后在那里键入'utop'? –

+0

是的,但它仍然不起作用。 – KUN

+0

你是什么意思,它不起作用?你能发布截图或完整的utop文本吗? –

回答

8

#use a.ml执行a.ml每个语句就像你曾直接输入顶层的语句。因此,你没有定义module A,所以你的其他文件不能有A.foo之类的东西。如果你想要module A,你必须首先字节编译a.ml,然后#load a.cmo

+4

较新版本的OCaml支持'#use_mod',它应该允许在没有事先编译的情况下使用。 – hcarty

+3

@hcarty提到的指令实际上是'#mod_use',确实非常方便。 :) –

+2

'#mod_use'正是我失踪的难题。谢谢@ShonFeder!我不能相信真实世界OCaml甚至没有提到它。 – Tobia