出于调试目的,我想在OCaml中有一个转换为字符串任意类型的函数,调试器目前有一个,但是有一个很酷。
sexplib库是完美的,但事实是我不能修改我需要添加with sexp
的所有类型,我也不能使用camlp4。
有没有这样的功能? (它不会出现在生产代码上,所以我接受了肮脏的解决方案)
Haskell的Show
类型类似于我的意思。
感谢您的时间
答案 0 :(得分:5)
Std中的Batteries Included模块提供了dump
函数,可将任意类型转换为可读字符串。它有点受限 - 因为它不知道类型,它不能正确打印变体类型的构造函数并用数字替换它们 - 但它仍然非常有用。由于类型信息在运行时不可用,因此这与您可以做的一样好。调试器和顶层使用编译器技巧来获得更好的表示,但是如果不是不可能在通用库中执行则很难。
我似乎还记得在某个地方看到一个更复杂的转储库,但我不记得在哪里。