如何使用 Jane Street 的 Sexplib 漂亮的打印机功能?



我是一个新的Ocaml-Learner,我正在尝试使用Jane Street的Sexplib(随附核心)打印一些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专有技术都将受到赞赏!(另外,很高兴听到这是否是超单性的,我只是做错了)

您需要冲洗格式化器,例如,

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 ()

另外,您可以使用%!格式指定器直接在格式规范中刷新。

使用格式库,我们有额外的缓冲层。因此,在其中积累了格式化器的印刷品,并在某些条件下被冲洗。在潮红发生之前,根据规范对数据进行格式化,然后将其打印到频道中(可能会根据其自身标准进行冲洗数据),在所有内容最终被填充后,以确保所有内容都将所有内容输出到设备中,与通道关联。

相关内容

  • 没有找到相关文章

最新更新