2012-03-19 75 views
6

假設我有一個OCaml庫文件foo.cma。有沒有一個命令行工具來打印函數和其他類型的簽名? ocamlbrowser實用程序似乎是基於Windows的(抱怨$ DISPLAY環境變量)。用例是,我做了:從控制檯檢查庫(.cma)簽名

ocamlc -c foo.cma main.ml 

,並得到:

File "main.ml", line 13, characters 33-47: 
Error: Unbound value ListUtil.split 

ListUtil.split應該駐留在foo.cma,但我不知道一個基於控制檯的工具來驗證它。

回答

9

在Debian/Ubuntu,則必須 「ocamlobjinfo」:

ocamlobjinfo stdlib.cma 

將顯示包含在stdlib.cma所有的單位名稱。然後,您可以創建一個短文件:

include SomeModule 

並使用-i進行編譯以查看模塊SomeModule中定義的內容。

5

在頂層,我剛加載CMA文件:

#load "foo.cma";; 

然後我重新定義的模塊正好看到簽名:

module Chunk = Foo;; 
+0

是的,這很有用,但它假定知道在cma文件中一起編譯的模塊的名稱。例如,如果我有一個文件foo.cma,裏面有兩個單獨的模塊,比如說foo1和foo2,編譯成如下形式:'ocamlc -a foo1.cmo foo2.cmo -o foo.cma'那麼有沒有辦法獲得在.cma文件中找到所有模塊的列表,還是必須事先知道這些名稱?在任何情況下都很奇怪,控制檯實用程序不是開箱即用的。 – 2012-03-19 13:23:37

+0

使用頂級方法,可以看到cma文件中的所有模塊。要事先了解該模塊,您必須在源文件中檢查mli文件或者沒有。否則,我真的不知道該怎麼做。 – cago 2012-03-19 13:50:05