如何使用 Format.fprintf 函数 return 漂亮的打印字符串?

How to return a pretty printed string using Format.fprintf function?

我正在尝试理解 Format.fprintf 并将其用于模块中的一段代码。 我有这样的功能

let some_function fmt s = match s with
  | For(exp,_) -> Format.fprintf fmt "something here"
  | Assume x-> Format.fprintf fmt "something here as well"

我想将这个函数修改为return一个字符串。 Printf.sprintf 不是一个选项,因为我在原始代码中使用了一些漂亮的打印机。请帮忙。

使用Format.asprintf:

let string_of_s = Format.asprintf "%a" some_function s

我不建议使用Format.sprintf,因为它的类型有限。例如以下不进行类型检查:

let string_of_s_ill_typed = Format.sprintf "%a" some_function s