使用解释器的打印功能?

时间:2014-04-25 19:28:14

标签: printing ocaml read-eval-print-loop

Ocaml解释器能够显示(打印)任何类型的值。例如,如果函数返回一个数组,它可以打印一个数组。此外,这甚至适用于自定义类型。例如,如果我这样做:

type int = DUMMY of int * string ;; 设x = DUMMY(1,“s”);;

然后x ;; 在屏幕上打印:

- :dummy = DUMMY(1,“s”)

我的问题是,我该如何访问此功能?例如,如果我正在调试一些代码并想要打印一些非标准对象(即除了int,string等之外的东西),那么我该如何使用解释器使用的函数来做到这一点,而不必创建一个单独的什么打印功能?

1 个答案:

答案 0 :(得分:4)

OCaml是一种有类型的语言,但它会在独立程序的运行时抛弃其类型信息,例如构造函数名称。因此,您不能拥有需要此类型信息的通用值打印机。

您称为解释器的OCaml toplevel或REPL是一个例外:它将类型保存在内存中。

目前,如果您想更轻松地打印数值,可以使用CamlP4扩展程序(例如“derinding”)自动生成它们。但它不提供一台通用打印机,而是自动为每种类型提供打印机。您仍然需要像print_list print_dummy那样将它们组合起来打印dummy list

的值