簡體   English   中英

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

[英]How do I use Jane Street's Sexplib's pretty-printer functions?

我是一個新的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的專業知識! (此外,很高興聽到這是否是超經典的,而我只是做錯了🤣)

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

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

另外,您可以使用%! 格式說明符以直接刷新您的格式說明。

有了Format庫,我們有了額外的緩沖層。 到格式化程序的后續打印結果將累積在其中,並在某些條件下被沖洗。 在進行刷新之前,根據規范對數據進行格式化,然后將其打印到通道中(該通道可以根據自己的標准來刷新數據),所有數據都最終被刷新之后,以確保將所有內容輸出到設備中。 ,與頻道相關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM