Types 请参见复杂OCaml代码中的推断类型

Types 请参见复杂OCaml代码中的推断类型,types,ocaml,type-inference,Types,Ocaml,Type Inference,我是一名OCaml新手,正在处理一些非常复杂(至少对我来说)的OCaml代码,我没有编写这些代码。如果我可以看到一些值的推断类型,这将有助于理解它,就像我可以通过将鼠标悬停在任何值上对F#和Visual Studio所做的那样,例如: (截图借用自) 我想我可以分解代码并将其提供给顶层以获取类型,但是还有其他更简单的方法吗?您可以将代码输入到ocaml顶层。是的,它没有那么漂亮,但它会显示类型。首先,您必须使用-annot标志编译文件(foo.ml)。这将生成注释文件(foo.annot),其

我是一名OCaml新手,正在处理一些非常复杂(至少对我来说)的OCaml代码,我没有编写这些代码。如果我可以看到一些值的推断类型,这将有助于理解它,就像我可以通过将鼠标悬停在任何值上对F#和Visual Studio所做的那样,例如:

(截图借用自)


我想我可以分解代码并将其提供给顶层以获取类型,但是还有其他更简单的方法吗?

您可以将代码输入到ocaml顶层。是的,它没有那么漂亮,但它会显示类型。

首先,您必须使用
-annot
标志编译文件(
foo.ml
)。这将生成注释文件(
foo.annot
),其中包含有关内部所有标识符的类型信息。您可以将其作为makefile或构建过程的一部分

然后,您需要依靠IDE来显示这些信息。我在Tuareg(emacs模式)中使用Ctrl+C、Ctrl+T来执行此操作,它突出显示当前表达式并显示其类型。

是Eclipse的O'Caml插件,在编辑代码时动态显示推断的类型

例如:


阅读OCaml代码时,对我有效的方法是从
.mli
文件开始,查看项目的总体结构。从那里,了解了什么是依赖关系,您可以从顶层进行探索


或者,您可以
ocamlc-i
查看相关文件,了解所有声明的类型和值的概述,或者在其他地方回复的Emacs中使用Tuareg模式,如果您有这种想法的话。

您还可以查看一个简单的命令行工具。ocaml-spotter extends-annother,.vim和ocaml ftplugin的关键顺序是
t
(通常是
,t
)@ygrek:为什么不添加ftplugin作为另一个答案?真正的答案是生成。annot文件和编辑器只是使用它们是的,我知道我可以这样做,但代码相当复杂,将代码分解到我想要看到的类型将非常耗时。Toplevel+rlwrap非常有用,只要有一种方法。。。