我正在處理一個學校項目,該項目由處理OCaml中的聯繫人列表組成。事情是我們必須製作模塊,但我不確定是否理解這是如何工作的。我有一個agenda.ml,agenda.mli,contact.ml和contact.mli,但是當我想使用agenda.ml時,它說,當我調用Contact.function時,即使我已經做了#use「contact」,Contact也是一個未綁定的值.ml」。OCaml中的個人模塊
有人可以解釋我整個模塊的東西嗎?
我正在處理一個學校項目,該項目由處理OCaml中的聯繫人列表組成。事情是我們必須製作模塊,但我不確定是否理解這是如何工作的。我有一個agenda.ml,agenda.mli,contact.ml和contact.mli,但是當我想使用agenda.ml時,它說,當我調用Contact.function時,即使我已經做了#use「contact」,Contact也是一個未綁定的值.ml」。OCaml中的個人模塊
有人可以解釋我整個模塊的東西嗎?
如果您使用的是頂層,你需要使用#mod_use <filename>
而非#use <filename>
:#use <filename>
只是讀取電流範圍內的文件名的內容,而#mod_use <filename>
使用該文件在當前範圍內定義一個新的模塊<Filename>
。
但是,#mod_use
和#use
都是簡單的文本指令,無法與一對ml
和mli
文件一起使用。您需要在某些時候閱讀OCaml構建系統。對於簡單的學校項目,ocamlbuild可能是一個好主意:編譯整個項目可能就像ocamlbuild <main>.native
一樣簡單。
謝謝,它正在工作,現在已經足夠用於我們的測試了,但我肯定會看看那個ocamlbuild! –
請提供一個儘可能小與您的2個模塊的例子 - 並提供您正在使用的編譯命令(希望,使用ocamlbuild)...這樣做會幫助您深入研究模塊 - 並將幫助社區幫助你:) - 請注意,網上有很多好的文檔(比如INRIA,Real World Ocaml和:http://www.dicosmo.org/CourseNotes/pfav/1314/cours1.handout.pdf) –