Ocaml 如何打印类型化解析树

Ocaml 如何打印类型化解析树,ocaml,Ocaml,-dparsetree可用于打印非类型化的解析树,但如何在OCaml中打印类型化的AST?我查看了源代码中键入的目录,似乎有些函数可以做到这一点。使用-dtypedtree。它是比-dparsetree更新的功能,是从4.01.0引入的。如果ocamlc没有编译器,您需要升级它 不幸的是,-dtypedtree没有显示键入的AST的类型信息。恐怕目前没有选项或工具可以打印带有类型信息的文件。可能是因为打印附加到子节点的所有类型信息太难阅读,我担心。例如,即使是一个简单的代码让fx=x+1也有以下

-dparsetree
可用于打印非类型化的解析树,但如何在OCaml中打印类型化的AST?我查看了源代码中键入的
目录,似乎有些函数可以做到这一点。

使用
-dtypedtree
。它是比
-dparsetree
更新的功能,是从4.01.0引入的。如果
ocamlc
没有编译器,您需要升级它

不幸的是,
-dtypedtree
没有显示键入的AST的类型信息。恐怕目前没有选项或工具可以打印带有类型信息的文件。可能是因为打印附加到子节点的所有类型信息太难阅读,我担心。例如,即使是一个简单的代码
让fx=x+1
也有以下类型:

let (f : int -> int) =
  (fun (x : int) ->  
    (( ( (+) : int -> int -> int) (x : int) : int -> int) (1 : int) : int) : int -> int)

最好的方法是编写自己的AST打印机,它只打印您感兴趣的类型。

Thx!似乎-dtypedtree不携带类型信息。例如,通过查看打印出来的
-dtypedtree
,我无法知道“let f x=x+1”的类型是
val f:int->int
。有没有办法查看解析树和类型信息?简单地让编译器推断
.mli
文件无法做到这一点。是的,
-dtypedtree
不幸地删除了推断的类型。我延长了我的回答。