2012-03-19 76 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