【问题标题】:How do I use Jane Street's Sexplib's pretty-printer functions?如何使用 Jane Street 的 Sexplib 的漂亮打印机功能?
【发布时间】:2018-03-15 02:35:42
【问题描述】:

我是一个新的 OCaml 学习者,我正在尝试使用 Jane Street 的 Sexplib(包含在 Core 中)打印一些 S 表达式:

let rec print_source ?(channel = stdout) sexps =
   let formatter = Format.formatter_of_out_channel channel in
   Sexp.pp_hum formatter |> List.iter sexps

但是,这似乎没有向stdout 输出任何内容。如果我用不使用格式的版本替换它,它工作正常:

let rec print_source ?(channel = stdout) sexps =
   Sexp.output_hum channel |> List.iter sexps

感谢任何 OCaml 专业知识! (另外,很高兴听到这是否是超级单调的,我只是做错了????)

【问题讨论】:

    标签: ocaml string-formatting s-expression ocaml-core


    【解决方案1】:

    您需要刷新格式化程序,例如,

    let rec print_source ?(channel = stdout) sexps =
       let formatter = Format.formatter_of_out_channel channel in
       Sexp.pp_hum formatter |> List.iter sexps;
       Format.pp_print_flush formatter ()
    

    或者,您可以使用%! 格式说明符直接刷新您的格式说明。

    使用格式库,我们有一个额外的缓冲层。格式化程序的后续打印在其中累积并在某些条件下被刷新。在flush之前,根据规范对数据进行格式化,然后打印到channel中(可以根据自己的标准flush数据),写完之后数据最终flush,确保所有输出到设备中,与频道相关联。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2013-06-20
      • 1970-01-01
      相关资源
      最近更新 更多