OCaml 等同于 f# "%A"
OCaml equivalent to f# "%A"
在 F# 中,以下是简单的:
let l = [1;2;3;4]
let s = sprintf "%A" l
其中“%A”打印几乎任何常见甚至递归数据结构的格式化版本。
在 ocaml 中有类似简单的东西吗?
有些东西很接近,%a
说明符接受两个参数,第一个是 'a
类型的漂亮打印机,第二个是 'a
类型的值。打印机的类型取决于使用的 printf 函数的类型。例如,
open Core_kernel.Std
open Format
printf "%a" Int63.pp Int63.one
当然,这很大程度上取决于图书馆的良好支持。如果没有为类型提供的 pp
函数,那么它就毫无用处。
还有一个 custom_printf 语法扩展可用于 pp 和 ppx。在此扩展中,您将模块名称放在规范符的位置。该模块必须具有 to_string
功能。 ppx版本,格式字符串前需要感叹号:
printf !"%{Int63}" Int63.one
还有一个转储功能,可在 Internet 上使用。特别是您可以在 Batteries 库中找到它。它递归数据表示并以或多或少的人类可读表示形式打印它。但这与格式化输出无关。
在 F# 中,以下是简单的:
let l = [1;2;3;4]
let s = sprintf "%A" l
其中“%A”打印几乎任何常见甚至递归数据结构的格式化版本。
在 ocaml 中有类似简单的东西吗?
有些东西很接近,%a
说明符接受两个参数,第一个是 'a
类型的漂亮打印机,第二个是 'a
类型的值。打印机的类型取决于使用的 printf 函数的类型。例如,
open Core_kernel.Std
open Format
printf "%a" Int63.pp Int63.one
当然,这很大程度上取决于图书馆的良好支持。如果没有为类型提供的 pp
函数,那么它就毫无用处。
还有一个 custom_printf 语法扩展可用于 pp 和 ppx。在此扩展中,您将模块名称放在规范符的位置。该模块必须具有 to_string
功能。 ppx版本,格式字符串前需要感叹号:
printf !"%{Int63}" Int63.one
还有一个转储功能,可在 Internet 上使用。特别是您可以在 Batteries 库中找到它。它递归数据表示并以或多或少的人类可读表示形式打印它。但这与格式化输出无关。