Ocaml解释器能够显示(打印)任何类型的值。例如,如果函数返回一个数组,它可以打印一个数组。此外,这甚至适用于自定义类型。例如,如果我这样做:
type int = DUMMY of int * string ;; 设x = DUMMY(1,“s”);;
然后x ;; 在屏幕上打印:
- :dummy = DUMMY(1,“s”)
我的问题是,我该如何访问此功能?例如,如果我正在调试一些代码并想要打印一些非标准对象(即除了int,string等之外的东西),那么我该如何使用解释器使用的函数来做到这一点,而不必创建一个单独的什么打印功能?
答案 0 :(得分:4)
OCaml是一种有类型的语言,但它会在独立程序的运行时抛弃其类型信息,例如构造函数名称。因此,您不能拥有需要此类型信息的通用值打印机。
您称为解释器的OCaml toplevel或REPL是一个例外:它将类型保存在内存中。
目前,如果您想更轻松地打印数值,可以使用CamlP4扩展程序(例如“derinding”)自动生成它们。但它不提供一台通用打印机,而是自动为每种类型提供打印机。您仍然需要像print_list print_dummy
那样将它们组合起来打印dummy list
。