假设我有一个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中,但我不知道基于控制台的工具来验证它。
答案 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。