【问题标题】:Using the print function of the interpreter?使用解释器的打印功能?
【发布时间】:2014-04-25 19:28:14
【问题描述】:

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

type dummy = DUMMY of int * string;; 让 x = DUMMY(1, "s");;

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

-: dummy = DUMMY(1, "s")

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

【问题讨论】:

  • 简而言之,你不能。而caml-list(另见here ...)是一个更好的提问场所(这个问题几年前已经在那里问过好几次了)。
  • @BasileStarynkevitch:为什么 stackoverflow 不适合这个问题?
  • (我之前的评论是一个诚实的问题,我并不是想说你错了)
  • 他没有说这个地方不合适,他说邮件列表更适合。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多