Модуль Format_doc
module Format_doc: sig .. end
Компонентный документ для механизма форматирования Format.
Этот модуль представляет чистый неизменяемый тип документа, описывающий последовательность инструкций форматирования, которые позднее будут выведены механизмом форматирования. Кроме того, он предоставляет интерпретатор строк формата, создающий документы этого типа на основе строки формата и соответствующих функций форматирования.
Модуль разработан для совместимости на уровне исходного кода с кодом, определяющим функции форматирования: замена `Format` на `Format_doc` в вашем коде преобразует функции форматирования `Format` в функции форматирования `Format_doc`.
module Doc: sig .. end
Определения и неизменяемый API для составления документов
API совместимости
Приведённые ниже функции и типы обеспечивают совместимость на уровне исходного кода с функциями форматирования и преобразование функций форматирования из Format_doc в функции форматирования Format. Обратное преобразование реализовано с помощью обходного механизма в инструкции форматирования и должно использоваться только для сохранения обратной совместимости.
type doc = Doc.t
type t = doc
type formatter
type 'a printer = formatter -> 'a -> unit
val formatter : doc ref -> formatter
formatter rdoc создаёт Format_doc.formatter, обновляющий ссылку rdoc
type 'a format_printer = Format.formatter -> 'a -> unit
Преобразовать функцию форматирования Format_doc в функцию форматирования Format.
val compat : 'a printer -> 'a format_printer
val compat1 : ('p1 -> 'a printer) -> 'p1 -> 'a format_printer val compat2 : ('p1 -> 'p2 -> 'a printer) -> 'p1 -> 'p2 -> 'a format_printer val deprecated_printer : (Format.formatter -> unit) -> formatter -> unit
При необходимости встроить функцию форматирования Format в поток инструкций форматирования. Это нарушает все гарантии, предоставляемые Format_doc.
val deprecated : 'a format_printer -> 'a printer
val deprecated1 : ('p1 -> 'a format_printer) -> 'p1 -> 'a printer
Интерпретаторы строк формата
val fprintf : formatter -> ('a, formatter, unit) format -> 'a val kfprintf : (formatter -> 'a) -> formatter -> ('b, formatter, unit, 'a) format4 -> 'b val asprintf : ('a, formatter, unit, string) format4 -> 'a val kasprintf : (string -> 'a) -> ('b, formatter, unit, 'a) format4 -> 'b val dprintf : ('a, formatter, unit, formatter -> unit) format4 -> 'a val kdprintf : ((formatter -> unit) -> 'a) -> ('b, formatter, unit, 'a) format4 -> 'b val doc_printf : ('a, formatter, unit, doc) format4 -> 'a
Format_doc.doc_printf и Format_doc.kdoc_printf напрямую создают документ
val kdoc_printf : (doc -> 'r) -> ('a, formatter, unit, 'r) format4 -> 'a
Совместимость с Format_doc.Doc
val doc_printer : 'a printer -> 'a Doc.printer
val pp_doc : doc printer
Совместимость исходного кода с Format
Функции форматирования строк
val pp_print_string : string printer
val pp_print_substring : pos:int -> len:int -> string printer
val pp_print_text : string printer
val pp_print_bytes : bytes printer
val pp_print_as : formatter -> int -> string -> unit
val pp_print_substring_as : pos:int -> len:int -> formatter -> int -> string -> unit
Функции форматирования примитивных типов
val pp_print_char : char printer
val pp_print_int : int printer
val pp_print_float : float printer
val pp_print_bool : bool printer
val pp_print_nothing : unit printer
Комбинаторы функций форматирования
val pp_print_iter : ?pp_sep:unit printer -> (('a -> unit) -> 'b -> unit) -> 'a printer -> 'b printer val pp_print_list : ?pp_sep:unit printer -> 'a printer -> 'a list printer
val pp_print_array : ?pp_sep:unit printer -> 'a printer -> 'a array printer
val pp_print_seq : ?pp_sep:unit printer -> 'a printer -> 'a Seq.t printer
val pp_print_option : ?none:unit printer -> 'a printer -> 'a option printer
val pp_print_result : ok:'a printer -> error:'e printer -> ('a, 'e) result printer val pp_print_either : left:'a printer -> right:'b printer -> ('a, 'b) Either.t printer
Блоки и теги
val pp_open_stag : Format.stag printer
val pp_close_stag : unit printer
val pp_open_box : int printer
val pp_close_box : unit printer
Подсказки для переносов
val pp_print_space : unit printer
val pp_print_cut : unit printer
val pp_print_break : formatter -> int -> int -> unit
val pp_print_custom_break : formatter -> fits:string * int * string -> breaks:string * int * string -> unit
Табуляции
val pp_open_tbox : unit printer
val pp_close_tbox : unit printer
val pp_set_tab : unit printer
val pp_print_tab : unit printer
val pp_print_tbreak : formatter -> int -> int -> unit
Переводы строк и сброс буфера
val pp_print_if_newline : unit printer
val pp_force_newline : unit printer
val pp_print_flush : unit printer
val pp_print_newline : unit printer
Функции, специфичные для компилятора
Разделители
val comma : unit printer
val semicolon : unit printer
Вывод компилятора
val pp_two_columns : ?sep:string -> ?max_lines:int -> formatter -> (string * string) list -> unit
pp_two_columns ?sep ?max_lines ppf l выводит строки из l в виде двух столбцов, разделённых sep (по умолчанию — "|"). max_lines можно использовать, чтобы задать максимальное число выводимых строк: если входных строк слишком много, посередине вставляется многоточие.
Пример:
pp_two_columns ~max_lines:3 Format.std_formatter [
"abc", "hello";
"def", "zzz";
"a" , "bllbl";
"bb" , "dddddd";
] выводит
abc | hello
...
bb | dddddd
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/compilerlibref/Format_doc.html