2017-04-21 99 views
0

我正在处理一个学校项目,该项目由处理OCaml中的联系人列表组成。事情是我们必须制作模块,但我不确定是否理解这是如何工作的。我有一个agenda.ml,agenda.mli,contact.ml和contact.mli,但是当我想使用agenda.ml时,它说,当我调用Contact.function时,即使我已经做了#use“contact”,Contact也是一个未绑定的值.ml”。OCaml中的个人模块

有人可以解释我整个模块的东西吗?

+0

请提供一个尽可能小与您的2个模块的例子 - 并提供您正在使用的编译命令(希望,使用ocamlbuild)...这样做会帮助您深入研究模块 - 并将帮助社区帮助你:) - 请注意,网上有很多好的文档(比如INRIA,Real World Ocaml和:http://www.dicosmo.org/CourseNotes/pfav/1314/cours1.handout.pdf) –

回答

1

如果您使用的是顶层,你需要使用#mod_use <filename>而非#use <filename>#use <filename>只是读取电流范围内的文件名的内容,而#mod_use <filename>使用该文件在当前范围内定义一个新的模块<Filename>

但是,#mod_use#use都是简单的文本指令,无法与一对mlmli文件一起使用。您需要在某些时候阅读OCaml构建系统。对于简单的学校项目,ocamlbuild可能是一个好主意:编译整个项目可能就像ocamlbuild <main>.native一样简单。

+0

谢谢,它正在工作,现在已经足够用于我们的测试了,但我肯定会看看那个ocamlbuild! –