2011-12-18 37 views
12

我想在.cmo加載模塊,我到頂層,我曾嘗試:OCaml的頂層模塊加載

$ ocaml mymodule.cmo 

我得到了頂級的提示,但我不能指Mymodule中

我也試過

#load "mymodule.cmo" 

它沒有抱怨,但還是不能指Mymodule中

我也試過

#use "mymodule.ml" 

這似乎是工作,但它不會代碼加載到Mymodule中的命名空間,因爲其實我是想加載幾個模塊到最高水平,這是一個問題,他們通過指對方自己模塊名稱空間。

+1

啊,我想通了,我的問題的原因是CMO文件在子目錄 - ocaml的LIB/mymodule.cmo。我不得不使用-ocaml -I lib mymodule.cmo來引用它。 – romerun 2011-12-18 19:59:30

+1

這很棒,你有事情的工作。你說過你在'#load'mymodule.cmo''的時候沒有抱怨。但是,如果頂層*找不到你指定的模塊,它將會投訴。也許有些事情在不同的地方出錯了。問候, – 2011-12-19 01:57:00

回答

15

後你做

#load "mymodule.cmo" 

你可以參考你的模塊,但你仍然需要使用模塊名稱:

Mymodule.x 

如果你想使用一個簡單的名稱(x)您還需要open模塊:

open Mymodule 

這可能是源代碼你的問題。

這裏有一個會話顯示了我說的:

$ cat mymodule.ml 
let x = 14 
$ ocaml312 
     Objective Caml version 3.12.0 
# load "mymodule.cmo";; 
# x;; 
Characters 0-1: 
    x 
^
Error: Unbound value x 
# Mymodule.x;; 
- : int = 14 
# open Mymodule;; 
# x;; 
- : int = 14 
#