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
不幸地删除了推断的类型。我延长了我的回答。