了解 OCaml 中使用 Formatter 的漂亮打印

Understanding pretty-printing with Formatter in OCaml

我有这样的格式化程序代码:

let format ff x = Format.fprintf ff "%d" x

它是具有许多其他功能的更大模块 ModuleName 的一部分(我们称其中之一为 add)。

我知道 ff 参数应该是输出的地方,比如 Format.std_formatter

但是,在我执行 #install_printer ModuleName.format;; 然后 运行 之后,比如 let sum = add 1 2,我发现 utop 已经正确地格式化了它。然而,我从未将任何参数传递给 ff! OCaml 是否只是默认为 std_formatter

OCaml REPL 知道如何使用在 #install_printer 注册的打印机,默认情况下它在 std_formatter 上打印。但是,这是 REPL 的特性,而不是语言的特性。