从控制台检查库(.cma)签名

时间:2012-03-19 11:13:29

标签: ocaml

假设我有一个OCaml库文件foo.cma。是否有一个命令行工具来打印函数的签名和那里定义的其他类型? ocamlbrowser实用程序似乎是基于Windows的(抱怨$ DISPLAY环境变量)。用例是我正在做:

ocamlc -c foo.cma main.ml

并获得:

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

ListUtil.split应该驻留在foo.cma中,但我不知道基于控制台的工具来验证它。

3 个答案:

答案 0 :(得分:9)

在Debian / Ubuntu上,你有“ocamlobjinfo”:

ocamlobjinfo stdlib.cma

将显示stdlib.cma中包含的所有单元名称。然后,您可以创建一个短文件:

include SomeModule

并使用-i编译它以查看模块SomeModule中定义的内容。

答案 1 :(得分:5)

在顶层,我只是加载cma文件:

#load "foo.cma";;

然后我重新定义了一个模块,只是为了看签名:

module Chunk = Foo;;

答案 2 :(得分:2)

为了编译引用ListUtil.split的代码,编译器需要找到相应的listUtil.cmi文件。为了链接该代码,编译器将需要包含该实现的cma(或cmo)文件。有关解释,请参阅http://mirror.ocamlcore.org/caml.inria.fr/pub/ml-archives/caml-list/2008/09/2bc9b38171177af5dc0d832a365d290d.en.html