linol/fmt/Fmt/index.html
2025-04-03 13:23:17 +00:00

49 lines
78 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fmt (fmt.Fmt)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.0.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">Index</a> &#x00BB; <a href="../index.html">fmt</a> &#x00BB; Fmt</nav><header class="odoc-preamble"><h1>Module <code><span>Fmt</span></code></h1><p><code>Format</code> pretty-printer combinators.</p><p>Consult <a href="#nameconv" title="nameconv">naming conventions</a> for your pretty-printers.</p><p><b>References</b></p><ul><li>The <code>Format</code> module documentation.</li><li>The required reading <code>Format</code> module <a href="https://ocaml.org/learn/tutorials/format.html">tutorial</a>.</li></ul></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#stdos">Standard outputs</a></li><li><a href="#formatting">Formatting</a></li><li><a href="#formatters">Formatters</a></li><li><a href="#seps">Separators</a></li><li><a href="#seq">Sequencing</a></li><li><a href="#boxes">Boxes</a></li><li><a href="#bracks">Brackets</a></li><li><a href="#records">Records</a></li><li><a href="#stdlib">Stdlib types</a></li><li><a href="#mgs">Magnitudes</a></li><li><a href="#binary">Binary data</a></li><li><a href="#text">Words, paragraphs, text and lines</a></li><li><a href="#hci">HCI fragments</a></li><li><a href="#utf8_cond">Conditional UTF-8 formatting</a></li><li><a href="#styled">Styled formatting</a><ul><li><a href="#style-rendering-control">Style rendering control</a></li></ul></li><li><a href="#stringconverters">Converting with string value converters</a></li><li><a href="#deprecated">Deprecated</a></li><li><a href="#nameconv">Naming conventions</a></li></ul></nav></div><div class="odoc-content"><h2 id="stdos"><a href="#stdos" class="anchor"></a>Standard outputs</h2><div class="odoc-spec"><div class="spec value anchored" id="val-stdout"><a href="#val-stdout" class="anchor"></a><code><span><span class="keyword">val</span> stdout : <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a></span></code></div><div class="spec-doc"><p><code>stdout</code> is the standard output formatter.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stderr"><a href="#val-stderr" class="anchor"></a><code><span><span class="keyword">val</span> stderr : <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a></span></code></div><div class="spec-doc"><p><code>stderr</code> is the standard error formatter.</p></div></div><h2 id="formatting"><a href="#formatting" class="anchor"></a>Formatting</h2><div class="odoc-spec"><div class="spec value anchored" id="val-pf"><a href="#val-pf" class="anchor"></a><code><span><span class="keyword">val</span> pf :
<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>pf</code> is <code>Format.fprintf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pr"><a href="#val-pr" class="anchor"></a><code><span><span class="keyword">val</span> pr : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>pr</code> is <code>pf stdout</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-epr"><a href="#val-epr" class="anchor"></a><code><span><span class="keyword">val</span> epr : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>epr</code> is <code>pf stderr</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-str"><a href="#val-str" class="anchor"></a><code><span><span class="keyword">val</span> str : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, string)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>str</code> is <code>Format.asprintf</code>.</p><p><b>Note.</b> When using <code>str</code> <a href="#val-utf_8"><code>utf_8</code></a> and <a href="#val-style_renderer"><code>style_renderer</code></a> are always respectively set to <code>true</code> and <code>`None</code>. See also <a href="#val-str_like"><code>str_like</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-kpf"><a href="#val-kpf" class="anchor"></a><code><span><span class="keyword">val</span> kpf :
<span><span>(<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'b</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'a</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>kpf</code> is <code>Format.kfprintf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-kstr"><a href="#val-kstr" class="anchor"></a><code><span><span class="keyword">val</span> kstr :
<span><span>(<span>string <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'b</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'a</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>kstr</code> is like <a href="#val-str"><code>str</code></a> but continuation based.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-str_like"><a href="#val-str_like" class="anchor"></a><code><span><span class="keyword">val</span> str_like :
<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, string)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>str_like ppf</code> is like <a href="#val-str"><code>str</code></a> except its <a href="#val-utf_8"><code>utf_8</code></a> and <a href="#val-style_renderer"><code>style_renderer</code></a> settings are those of <code>ppf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_buffer"><a href="#val-with_buffer" class="anchor"></a><code><span><span class="keyword">val</span> with_buffer :
<span><span class="optlabel">?like</span>:<a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <span class="arrow">&#45;&gt;</span></span>
<a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a></span></code></div><div class="spec-doc"><p><code>with_buffer ~like b</code> is a formatter whose <a href="#val-utf_8"><code>utf_8</code></a> and <a href="#val-style_renderer"><code>style_renderer</code></a> settings are copied from those of <code>like</code> (if provided).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-failwith"><a href="#val-failwith" class="anchor"></a><code><span><span class="keyword">val</span> failwith : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'b</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>failwith</code> is <code>kstr failwith</code>, raises <a href="../../ocaml/Stdlib/index.html#exception-Failure"><code>Stdlib.Failure</code></a> with a pretty-printed string argument.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-failwith_notrace"><a href="#val-failwith_notrace" class="anchor"></a><code><span><span class="keyword">val</span> failwith_notrace : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'b</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>failwith_notrace</code> is like <a href="#val-failwith"><code>failwith</code></a> but raises with <code>raise_notrace</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-invalid_arg"><a href="#val-invalid_arg" class="anchor"></a><code><span><span class="keyword">val</span> invalid_arg : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'b</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>invalid_arg</code> is <code>kstr invalid_arg</code>, raises <a href="../../ocaml/Stdlib/index.html#exception-Invalid_argument"><code>Stdlib.Invalid_argument</code></a> with a pretty-printed string argument.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error"><a href="#val-error" class="anchor"></a><code><span><span class="keyword">val</span> error :
<span><span><span>(<span class="type-var">'b</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span><span>(<span class="type-var">'a</span>, string)</span> <a href="../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>error fmt ...</code> is <code>kstr (fun s -&gt; Error s) fmt ...</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error_msg"><a href="#val-error_msg" class="anchor"></a><code><span><span class="keyword">val</span> error_msg :
<span><span><span>(<span class="type-var">'b</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span><span>(<span class="type-var">'a</span>, <span>[&gt; <span>`Msg of string</span> ]</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>error_msg fmt ...</code> is <code>kstr (fun s -&gt; Error (`Msg s)) fmt ...</code></p></div></div><h2 id="formatters"><a href="#formatters" class="anchor"></a>Formatters</h2><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</span></span><span> = <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>The type for formatters of values of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-flush"><a href="#val-flush" class="anchor"></a><code><span><span class="keyword">val</span> flush : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>flush</code> has the effect of <code>Format.pp_print_flush</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nop"><a href="#val-nop" class="anchor"></a><code><span><span class="keyword">val</span> nop : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>nop</code> formats nothing.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-any"><a href="#val-any" class="anchor"></a><code><span><span class="keyword">val</span> any : <span><span><span>(unit, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>any fmt ppf v</code> formats any value with the constant format <code>fmt</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-using"><a href="#val-using" class="anchor"></a><code><span><span class="keyword">val</span> using : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>using f pp ppf v</code> ppf ppf <code>(f v)</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-const"><a href="#val-const" class="anchor"></a><code><span><span class="keyword">val</span> const : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>const pp_v v</code> always formats <code>v</code> using <code>pp_v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-if'"><a href="#val-if'" class="anchor"></a><code><span><span class="keyword">val</span> if' : <span>bool <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>if' bool pp</code> is <code>pp</code> if <code>bool</code> is <code>true</code> and <a href="#val-nop"><code>nop</code></a> otherwise.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fmt"><a href="#val-fmt" class="anchor"></a><code><span><span class="keyword">val</span> fmt :
<span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fmt fmt ppf</code> is <code>pf ppf fmt</code>. If <code>fmt</code> is used with a single non-constant formatting directive, generates a value of type <a href="#type-t"><code>t</code></a>.</p></div></div><h2 id="seps"><a href="#seps" class="anchor"></a>Separators</h2><div class="odoc-spec"><div class="spec value anchored" id="val-cut"><a href="#val-cut" class="anchor"></a><code><span><span class="keyword">val</span> cut : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>cut</code> has the effect of <code>Format.pp_print_cut</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sp"><a href="#val-sp" class="anchor"></a><code><span><span class="keyword">val</span> sp : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>sp</code> has the effect of <code>Format.pp_print_space</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sps"><a href="#val-sps" class="anchor"></a><code><span><span class="keyword">val</span> sps : <span>int <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>sps n</code> has the effect of <code>Format.pp_print_break</code><code> n 0</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-comma"><a href="#val-comma" class="anchor"></a><code><span><span class="keyword">val</span> comma : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>comma</code> is <a href="#val-any"><code>Fmt.any</code></a><code> &quot;,@ &quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-semi"><a href="#val-semi" class="anchor"></a><code><span><span class="keyword">val</span> semi : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>semi</code> is <a href="#val-any"><code>Fmt.any</code></a><code> &quot;;@ &quot;</code>.</p></div></div><h2 id="seq"><a href="#seq" class="anchor"></a>Sequencing</h2><div class="odoc-spec"><div class="spec value anchored" id="val-append"><a href="#val-append" class="anchor"></a><code><span><span class="keyword">val</span> append : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>append pp_v0 pp_v1 ppf v</code> is <code>pp_v0 ppf v; pp_v1 ppf v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(++)"><a href="#val-(++)" class="anchor"></a><code><span><span class="keyword">val</span> (++) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>( ++ )</code> is <a href="#val-append"><code>append</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-concat"><a href="#val-concat" class="anchor"></a><code><span><span class="keyword">val</span> concat : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>concat ~sep pps</code> formats a value using the formaters <code>pps</code> and separting each format with <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span><span class="keyword">val</span> iter : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>iter ~sep iter pp_elt</code> formats the iterations of <code>iter</code> over a value using <code>pp_elt</code>. Iterations are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_bindings"><a href="#val-iter_bindings" class="anchor"></a><code><span><span class="keyword">val</span> iter_bindings :
<span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'c</span> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'c</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>iter_bindings ~sep iter pp_binding</code> formats the iterations of <code>iter</code> over a value using <code>pp_binding</code>. Iterations are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>).</p></div></div><h2 id="boxes"><a href="#boxes" class="anchor"></a>Boxes</h2><div class="odoc-spec"><div class="spec value anchored" id="val-box"><a href="#val-box" class="anchor"></a><code><span><span class="keyword">val</span> box : <span><span class="optlabel">?indent</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>box ~indent pp ppf</code> wraps <code>pp</code> in a pretty-printing box. The box tries to print as much as possible on every line, while emphasizing the box structure (see <code>Format.pp_open_box</code>). Break hints that lead to a new line add <code>indent</code> to the current indentation (defaults to <code>0</code>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hbox"><a href="#val-hbox" class="anchor"></a><code><span><span class="keyword">val</span> hbox : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>hbox</code> is like <a href="#val-box"><code>box</code></a> but is a horizontal box: the line is not split in this box (but may be in sub-boxes). See <code>Format.pp_open_hbox</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-vbox"><a href="#val-vbox" class="anchor"></a><code><span><span class="keyword">val</span> vbox : <span><span class="optlabel">?indent</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>vbox</code> is like <a href="#val-box"><code>box</code></a> but is a vertical box: every break hint leads to a new line which adds <code>indent</code> to the current indentation (defaults to <code>0</code>). See <code>Format.pp_open_vbox</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hvbox"><a href="#val-hvbox" class="anchor"></a><code><span><span class="keyword">val</span> hvbox : <span><span class="optlabel">?indent</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>hvbox</code> is like <a href="#val-hbox"><code>hbox</code></a> if it fits on a single line, or like <a href="#val-vbox"><code>vbox</code></a> otherwise. See <code>Format.pp_open_hvbox</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hovbox"><a href="#val-hovbox" class="anchor"></a><code><span><span class="keyword">val</span> hovbox : <span><span class="optlabel">?indent</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>hovbox</code> is a condensed <a href="#val-box"><code>box</code></a>. See <code>Format.pp_open_hovbox</code>.</p></div></div><h2 id="bracks"><a href="#bracks" class="anchor"></a>Brackets</h2><div class="odoc-spec"><div class="spec value anchored" id="val-parens"><a href="#val-parens" class="anchor"></a><code><span><span class="keyword">val</span> parens : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>parens pp_v ppf</code> is <code>pf &quot;@[&lt;1&gt;(%a)@]&quot; pp_v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-brackets"><a href="#val-brackets" class="anchor"></a><code><span><span class="keyword">val</span> brackets : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>brackets pp_v ppf</code> is <code>pf &quot;@[&lt;1&gt;[%a]@]&quot; pp_v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-braces"><a href="#val-braces" class="anchor"></a><code><span><span class="keyword">val</span> braces : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>braces pp_v ppf</code> is <code>pf &quot;@[&lt;1&gt;{%a}@]&quot; pp_v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-quote"><a href="#val-quote" class="anchor"></a><code><span><span class="keyword">val</span> quote : <span><span class="optlabel">?mark</span>:string <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>quote ~mark pp_v ppf</code> is <code>pf &quot;@[&lt;1&gt;@&lt;1&gt;%s%a@&lt;1&gt;%s@]&quot; mark pp_v mark</code>, <code>mark</code> defaults to <code>&quot;\&quot;&quot;</code>, it is always counted as spanning as single column (this allows for UTF-8 encoded marks).</p></div></div><h2 id="records"><a href="#records" class="anchor"></a>Records</h2><div class="odoc-spec"><div class="spec value anchored" id="val-id"><a href="#val-id" class="anchor"></a><code><span><span class="keyword">val</span> id : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>id</code> is <code>Fun.id</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field"><a href="#val-field" class="anchor"></a><code><span><span class="keyword">val</span> field :
<span><span class="optlabel">?label</span>:<span>string <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>string <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>field ~label ~sep l prj pp_v</code> pretty prints a labelled field value as <code>pf &quot;@[&lt;1&gt;%a%a%a@]&quot; label l sep () (using prj pp_v)</code>. <code>label</code> defaults to <code>styled `Yellow string</code> and <code>sep</code> to <code>any &quot;:@ &quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-record"><a href="#val-record" class="anchor"></a><code><span><span class="keyword">val</span> record : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>record ~sep fields</code> pretty-prints a value using the concatenation of <code>fields</code>, separated by <code>sep</code> (defaults to <code>cut</code>) and framed in a vertical box.</p></div></div><h2 id="stdlib"><a href="#stdlib" class="anchor"></a>Stdlib types</h2><p>Formatters for structures give full control to the client over the formatting process and do not wrap the formatted structures with boxes. Use the <a href="Dump/index.html"><code>Dump</code></a> module to quickly format values for inspection.</p><div class="odoc-spec"><div class="spec value anchored" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>bool <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>bool</code> is <code>Format.pp_print_bool</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>int ppf</code> is <code>pf ppf &quot;%d&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><code><span><span class="keyword">val</span> nativeint : <span>nativeint <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>nativeint ppf</code> is <code>pf ppf &quot;%nd&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32"><a href="#val-int32" class="anchor"></a><code><span><span class="keyword">val</span> int32 : <span>int32 <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>int32 ppf</code> is <code>pf ppf &quot;%ld&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span>int64 <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>int64 ppf</code> is <code>pf ppf &quot;%Ld&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uint"><a href="#val-uint" class="anchor"></a><code><span><span class="keyword">val</span> uint : <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>uint ppf</code> is <code>pf ppf &quot;%u&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unativeint"><a href="#val-unativeint" class="anchor"></a><code><span><span class="keyword">val</span> unativeint : <span>nativeint <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>unativeint ppf</code> is <code>pf ppf &quot;%nu&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uint32"><a href="#val-uint32" class="anchor"></a><code><span><span class="keyword">val</span> uint32 : <span>int32 <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>uint32 ppf</code> is <code>pf ppf &quot;%lu&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uint64"><a href="#val-uint64" class="anchor"></a><code><span><span class="keyword">val</span> uint64 : <span>int64 <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>uint64 ppf</code> is <code>pf ppf &quot;%Lu&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>float ppf</code> is <code>pf ppf &quot;%g&quot;.</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_dfrac"><a href="#val-float_dfrac" class="anchor"></a><code><span><span class="keyword">val</span> float_dfrac : <span>int <span class="arrow">&#45;&gt;</span></span> <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>float_dfrac d</code> rounds the float to the <code>d</code>th <em>decimal</em> fractional digit and formats the result with <code>&quot;%g&quot;</code>. Ties are rounded towards positive infinity. The result is only defined for <code>0 &lt;= d &lt;= 16</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_dsig"><a href="#val-float_dsig" class="anchor"></a><code><span><span class="keyword">val</span> float_dsig : <span>int <span class="arrow">&#45;&gt;</span></span> <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>float_dsig d</code> rounds the normalized <em>decimal</em> significand of the float to the <code>d</code>th decimal fractional digit and formats the result with <code>&quot;%g&quot;</code>. Ties are rounded towards positive infinity. The result is NaN on infinities and only defined for <code>0 &lt;= d &lt;= 16</code>.</p><p><b>Warning.</b> The current implementation overflows on large <code>d</code> and floats.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-char"><a href="#val-char" class="anchor"></a><code><span><span class="keyword">val</span> char : <span>char <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>char</code> is <code>Format.pp_print_char</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string"><a href="#val-string" class="anchor"></a><code><span><span class="keyword">val</span> string : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>string</code> is <code>Format.pp_print_string</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-buffer"><a href="#val-buffer" class="anchor"></a><code><span><span class="keyword">val</span> buffer : <span><a href="../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>buffer</code> formats a <code>Buffer.t</code> value's current contents.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exn"><a href="#val-exn" class="anchor"></a><code><span><span class="keyword">val</span> exn : <span>exn <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>exn</code> formats an exception.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exn_backtrace"><a href="#val-exn_backtrace" class="anchor"></a><code><span><span class="keyword">val</span> exn_backtrace : <span><span>(exn * <a href="../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>exn_backtrace</code> formats an exception backtrace.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pair"><a href="#val-pair" class="anchor"></a><code><span><span class="keyword">val</span> pair : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>pair ~sep pp_fst pp_snd</code> formats a pair. The first and second projection are formatted using <code>pp_fst</code> and <code>pp_snd</code> and are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-option"><a href="#val-option" class="anchor"></a><code><span><span class="keyword">val</span> option : <span><span class="optlabel">?none</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>option ~none pp_v</code> formats an optional value. The <code>Some</code> case uses <code>pp_v</code> and <code>None</code> uses <code>none</code> (defaults to <a href="#val-nop"><code>nop</code></a>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-result"><a href="#val-result" class="anchor"></a><code><span><span class="keyword">val</span> result : <span><span class="label">ok</span>:<span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="label">error</span>:<span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-result">result</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>result ~ok ~error</code> formats a result value using <code>ok</code> for the <code>Ok</code> case and <code>error</code> for the <code>Error</code> case.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-list"><a href="#val-list" class="anchor"></a><code><span><span class="keyword">val</span> list : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>list sep pp_v</code> formats list elements. Each element of the list is formatted in order with <code>pp_v</code>. Elements are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the list is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-array"><a href="#val-array" class="anchor"></a><code><span><span class="keyword">val</span> array : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> array</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>array sep pp_v</code> formats array elements. Each element of the array is formatted in order with <code>pp_v</code>. Elements are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the array is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-seq"><a href="#val-seq" class="anchor"></a><code><span><span class="keyword">val</span> seq : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>seq sep pp_v</code> formats sequence elements. Each element of the sequence is formatted in order with <code>pp_v</code>. Elements are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the sequence is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hashtbl"><a href="#val-hashtbl" class="anchor"></a><code><span><span class="keyword">val</span> hashtbl : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../../ocaml/Stdlib/Hashtbl/index.html#type-t">Stdlib.Hashtbl.t</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>hashtbl ~sep pp_binding</code> formats the bindings of a hash table. Each binding is formatted with <code>pp_binding</code> and bindings are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the hash table has multiple bindings for a given key, all bindings are formatted, with the most recent binding first. If the hash table is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-queue"><a href="#val-queue" class="anchor"></a><code><span><span class="keyword">val</span> queue : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="../../ocaml/Stdlib/Queue/index.html#type-t">Stdlib.Queue.t</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>queue ~sep pp_v</code> formats queue elements. Each element of the queue is formatted in least recently added order with <code>pp_v</code>. Elements are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the queue is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stack"><a href="#val-stack" class="anchor"></a><code><span><span class="keyword">val</span> stack : <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="../../ocaml/Stdlib/Stack/index.html#type-t">Stdlib.Stack.t</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>stack ~sep pp_v</code> formats stack elements. Each element of the stack is formatted from top to bottom order with <code>pp_v</code>. Elements are separated by <code>sep</code> (defaults to <a href="#val-cut"><code>cut</code></a>). If the stack is empty, this is <a href="#val-nop"><code>nop</code></a>.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Dump"><a href="#module-Dump" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Dump/index.html">Dump</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Formatters for inspecting OCaml values.</p></div></div><h2 id="mgs"><a href="#mgs" class="anchor"></a>Magnitudes</h2><div class="odoc-spec"><div class="spec value anchored" id="val-si_size"><a href="#val-si_size" class="anchor"></a><code><span><span class="keyword">val</span> si_size : <span><span class="label">scale</span>:int <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>si_size ~scale unit</code> formats a non negative integer representing unit <code>unit</code> at scale 10<sup>scale * 3</sup>, depending on its magnitude, using power of 3 <a href="https://www.bipm.org/en/publications/si-brochure/chapter3.html">SI prefixes</a> (i.e. all of them except deca, hector, deci and centi). Only US-ASCII characters are used, <code>µ</code> (10<sup>-6</sup>) is written using <code>u</code>.</p><p><code>scale</code> indicates the scale 10<sup>scale * 3</sup> an integer represents, for example <code>-1</code> for m<code>unit</code> (10<sup>-3</sup>), <code>0</code> for <code>unit</code> (10<sup>0</sup>), <code>1</code> for <code>kunit</code> (10<sup>3</sup>); it must be in the range [<code>-8</code>;<code>8</code>] or <code>Invalid_argument</code> is raised.</p><p>Except at the maximal yotta scale always tries to show three digits of data with trailing fractional zeros omited. Rounds towards positive infinity (over approximates).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-byte_size"><a href="#val-byte_size" class="anchor"></a><code><span><span class="keyword">val</span> byte_size : <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>byte_size</code> is <code>si_size ~scale:0 &quot;B&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bi_byte_size"><a href="#val-bi_byte_size" class="anchor"></a><code><span><span class="keyword">val</span> bi_byte_size : <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>bi_byte_size</code> formats a byte size according to its magnitude using <a href="https://en.wikipedia.org/wiki/Binary_prefix">binary prefixes</a> up to pebi bytes (2<sup>15</sup>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uint64_ns_span"><a href="#val-uint64_ns_span" class="anchor"></a><code><span><span class="keyword">val</span> uint64_ns_span : <span>int64 <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>uint64_ns_span</code> formats an <em>unsigned</em> nanosecond time span according to its magnitude using <a href="http://www.bipm.org/en/publications/si-brochure/chapter3.html">SI prefixes</a> on seconds and <a href="http://www.bipm.org/en/publications/si-brochure/table6.html">accepted non-SI units</a>. Years are counted in Julian years (365.25 SI-accepted days) as <a href="http://www.iau.org/publications/proceedings_rules/units/">defined</a> by the International Astronomical Union (IAU). Only US-ASCII characters are used (<code>us</code> is used for <code>µs</code>).</p></div></div><h2 id="binary"><a href="#binary" class="anchor"></a>Binary data</h2><div class="odoc-spec"><div class="spec type anchored" id="type-vec"><a href="#type-vec" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a vec</span></span><span> = int * <span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span></span></code></div><div class="spec-doc"><p>The type for random addressable, sized sequences. Each <code>(n, f)</code> represents the sequence <code>f 0, ..., f (n - 1)</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-on_bytes"><a href="#val-on_bytes" class="anchor"></a><code><span><span class="keyword">val</span> on_bytes : <span><span><span>char <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>bytes <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>on_bytes pp</code> is <code>pp</code> adapted to format (entire) <code>bytes</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-on_string"><a href="#val-on_string" class="anchor"></a><code><span><span class="keyword">val</span> on_string : <span><span><span>char <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>on_string pp</code> is <code>pp</code> adapted to format (entire) <code>string</code>s.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ascii"><a href="#val-ascii" class="anchor"></a><code><span><span class="keyword">val</span> ascii : <span><span class="optlabel">?w</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?subst</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span>char <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>ascii ~w ~subst ()</code> formats character sequences by printing characters in the <em>printable US-ASCII range</em> (<code>[0x20];[0x7E]</code>) as is, and replacing the rest with <code>subst</code> (defaults to <code>fmt &quot;.&quot;</code>). <code>w</code> causes the output to be right padded to the size of formatting at least <code>w</code> sequence elements (defaults to <code>0</code>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-octets"><a href="#val-octets" class="anchor"></a><code><span><span class="keyword">val</span> octets : <span><span class="optlabel">?w</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?sep</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span>char <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>octets ~w ~sep ()</code> formats character sequences as hexadecimal digits. It prints groups of successive characters of unspecified length together, separated by <code>sep</code> (defaults to <a href="#val-sp"><code>sp</code></a>). <code>w</code> causes the output to be right padded to the size of formatting at least <code>w</code> sequence elements (defaults to <code>0</code>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-addresses"><a href="#val-addresses" class="anchor"></a><code><span><span class="keyword">val</span> addresses : <span><span class="optlabel">?addr</span>:<span>int <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?w</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span><span><span class="type-var">'a</span> <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>addresses pp</code> formats sequences by applying <code>pp</code> to consecutive subsequences of length <code>w</code> (defaults to 16). <code>addr</code> formats subsequence offsets (defaults to an unspecified hexadecimal format).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hex"><a href="#val-hex" class="anchor"></a><code><span><span class="keyword">val</span> hex : <span><span class="optlabel">?w</span>:int <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span>char <a href="#type-vec">vec</a></span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>hex ~w ()</code> formats character sequences as traditional hex dumps, matching the output of <em>xxd</em> and forcing line breaks after every <code>w</code> characters (defaults to 16).</p></div></div><h2 id="text"><a href="#text" class="anchor"></a>Words, paragraphs, text and lines</h2><p><b>Note.</b> These functions only work on US-ASCII strings and/or with newlines (<code>'\n'</code>). If you are dealing with UTF-8 strings or different kinds of line endings you should use the pretty-printers from <code>Uuseg_string</code>.</p><p><b>White space.</b> White space is one of the following US-ASCII characters: space <code>' '</code> (<code>0x20</code>), tab <code>'\t'</code> (<code>0x09</code>), newline <code>'\n'</code> (<code>0x0A</code>), vertical tab (<code>0x0B</code>), form feed (<code>0x0C</code>), carriage return <code>'\r'</code> (<code>0x0D</code>).</p><div class="odoc-spec"><div class="spec value anchored" id="val-words"><a href="#val-words" class="anchor"></a><code><span><span class="keyword">val</span> words : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>words</code> formats words by suppressing initial and trailing white space and replacing consecutive white space with a single <code>Format.pp_print_space</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-paragraphs"><a href="#val-paragraphs" class="anchor"></a><code><span><span class="keyword">val</span> paragraphs : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>paragraphs</code> formats paragraphs by suppressing initial and trailing spaces and newlines, replacing blank lines (a line made only of white space) by a two <code>Format.pp_force_newline</code> and remaining consecutive white space with a single <code>Format.pp_print_space</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>text</code> formats text by respectively replacing spaces and newlines in the string with <code>Format.pp_print_space</code> and <code>Format.pp_force_newline</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lines"><a href="#val-lines" class="anchor"></a><code><span><span class="keyword">val</span> lines : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>lines</code> formats lines by replacing newlines (<code>'\n'</code>) in the string with calls to <code>Format.pp_force_newline</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-truncated"><a href="#val-truncated" class="anchor"></a><code><span><span class="keyword">val</span> truncated : <span><span class="label">max</span>:int <span class="arrow">&#45;&gt;</span></span> <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>truncated ~max</code> formats a string using at most <code>max</code> characters. If the string doesn't fit, it is truncated and ended with three consecutive dots which do count towards <code>max</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-text_loc"><a href="#val-text_loc" class="anchor"></a><code><span><span class="keyword">val</span> text_loc : <span><span>(<span>(int * int)</span> * <span>(int * int)</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>text_loc</code> formats a line-column text range according to <a href="http://www.gnu.org/prep/standards/standards.html#Errors">GNU conventions</a>.</p></div></div><h2 id="hci"><a href="#hci" class="anchor"></a>HCI fragments</h2><div class="odoc-spec"><div class="spec value anchored" id="val-one_of"><a href="#val-one_of" class="anchor"></a><code><span><span class="keyword">val</span> one_of : <span><span class="optlabel">?empty</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>one_of ~empty pp_v ppf l</code> formats according to the length of <code>l</code></p><ul><li><code>0</code>, formats <code>empty</code> (defaults to <a href="#val-nop"><code>nop</code></a>).</li><li><code>1</code>, formats the element with <code>pp_v</code>.</li><li><code>2</code>, formats <code>&quot;either %a or %a&quot;</code> with the list elements</li><li><code>n</code>, formats <code>&quot;one of %a, ... or %a&quot;</code> with the list elements</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-did_you_mean"><a href="#val-did_you_mean" class="anchor"></a><code><span><span class="keyword">val</span> did_you_mean :
<span><span class="optlabel">?pre</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?post</span>:<span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">kind</span>:string <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span class="type-var">'a</span> * <span><span class="type-var">'a</span> list</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>did_you_mean ~pre kind ~post pp_v</code> formats a faulty value <code>v</code> of kind <code>kind</code> and a list of <code>hints</code> that <code>v</code> could have been mistaken for.</p><p><code>pre</code> defaults to <code>unit &quot;Unknown&quot;</code>, <code>post</code> to <a href="#val-nop"><code>nop</code></a> they surround the faulty value before the &quot;did you mean&quot; part as follows <code>&quot;%a %s %a%a.&quot; pre () kind pp_v v post ()</code>. If <code>hints</code> is empty no &quot;did you mean&quot; part is printed.</p></div></div><h2 id="utf8_cond"><a href="#utf8_cond" class="anchor"></a>Conditional UTF-8 formatting</h2><p><b>Note.</b> Since <code>Format</code> is not UTF-8 aware using UTF-8 output may derail the pretty printing process. Use the pretty-printers from <code>Uuseg_string</code> if you are serious about UTF-8 formatting.</p><div class="odoc-spec"><div class="spec value anchored" id="val-if_utf_8"><a href="#val-if_utf_8" class="anchor"></a><code><span><span class="keyword">val</span> if_utf_8 : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>if_utf_8 pp_u pp ppf v</code> is:</p><ul><li><code>pp_u ppf v</code> if <code>utf_8 ppf</code> is <code>true</code>.</li><li><code>pp ppf v</code> otherwise.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-utf_8"><a href="#val-utf_8" class="anchor"></a><code><span><span class="keyword">val</span> utf_8 : <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>utf_8 ppf</code> is <code>true</code> if UTF-8 output is enabled on <code>ppf</code>. If <a href="#val-set_utf_8"><code>set_utf_8</code></a> hasn't been called on <code>ppf</code> this is <code>true</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_utf_8"><a href="#val-set_utf_8" class="anchor"></a><code><span><span class="keyword">val</span> set_utf_8 : <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span>bool <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>set_utf_8 ppf b</code> enables or disables conditional UTF-8 formatting on <code>ppf</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if <code>ppf</code> is <code>Format.str_formatter</code>: it is is always UTF-8 enabled.</p></li></ul></div></div><h2 id="styled"><a href="#styled" class="anchor"></a>Styled formatting</h2><div class="odoc-spec"><div class="spec type anchored" id="type-color"><a href="#type-color" class="anchor"></a><code><span><span class="keyword">type</span> color</span><span> = </span><span>[ </span></code><ol><li id="type-color.Black" class="def variant constructor anchored"><a href="#type-color.Black" class="anchor"></a><code><span>| </span><span>`Black</span></code></li><li id="type-color.Blue" class="def variant constructor anchored"><a href="#type-color.Blue" class="anchor"></a><code><span>| </span><span>`Blue</span></code></li><li id="type-color.Cyan" class="def variant constructor anchored"><a href="#type-color.Cyan" class="anchor"></a><code><span>| </span><span>`Cyan</span></code></li><li id="type-color.Green" class="def variant constructor anchored"><a href="#type-color.Green" class="anchor"></a><code><span>| </span><span>`Green</span></code></li><li id="type-color.Magenta" class="def variant constructor anchored"><a href="#type-color.Magenta" class="anchor"></a><code><span>| </span><span>`Magenta</span></code></li><li id="type-color.Red" class="def variant constructor anchored"><a href="#type-color.Red" class="anchor"></a><code><span>| </span><span>`Red</span></code></li><li id="type-color.White" class="def variant constructor anchored"><a href="#type-color.White" class="anchor"></a><code><span>| </span><span>`White</span></code></li><li id="type-color.Yellow" class="def variant constructor anchored"><a href="#type-color.Yellow" class="anchor"></a><code><span>| </span><span>`Yellow</span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>The type for colors.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-style"><a href="#type-style" class="anchor"></a><code><span><span class="keyword">type</span> style</span><span> = </span><span>[ </span></code><ol><li id="type-style.None" class="def variant constructor anchored"><a href="#type-style.None" class="anchor"></a><code><span>| </span><span>`None</span></code></li><li id="type-style.Bold" class="def variant constructor anchored"><a href="#type-style.Bold" class="anchor"></a><code><span>| </span><span>`Bold</span></code></li><li id="type-style.Faint" class="def variant constructor anchored"><a href="#type-style.Faint" class="anchor"></a><code><span>| </span><span>`Faint</span></code></li><li id="type-style.Italic" class="def variant constructor anchored"><a href="#type-style.Italic" class="anchor"></a><code><span>| </span><span>`Italic</span></code></li><li id="type-style.Underline" class="def variant constructor anchored"><a href="#type-style.Underline" class="anchor"></a><code><span>| </span><span>`Underline</span></code></li><li id="type-style.Reverse" class="def variant constructor anchored"><a href="#type-style.Reverse" class="anchor"></a><code><span>| </span><span>`Reverse</span></code></li><li id="type-style.Fg" class="def variant constructor anchored"><a href="#type-style.Fg" class="anchor"></a><code><span>| </span><span>`Fg <span class="keyword">of</span> <span>[ <a href="#type-color">color</a> <span><span>| `Hi</span> of <a href="#type-color">color</a></span> ]</span></span></code></li><li id="type-style.Bg" class="def variant constructor anchored"><a href="#type-style.Bg" class="anchor"></a><code><span>| </span><span>`Bg <span class="keyword">of</span> <span>[ <a href="#type-color">color</a> <span><span>| `Hi</span> of <a href="#type-color">color</a></span> ]</span></span></code></li><li id="type-style.color" class="def variant type anchored"><a href="#type-style.color" class="anchor"></a><code><span>| </span><span><a href="#type-color">color</a></span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>The type for styles:</p><ul><li><code>`None</code> resets the styling.</li><li><code>`Bold</code>, <code>`Faint</code>, <code>`Italic</code>, <code>`Underline</code> and <code>`Reverse</code> are display attributes.</li><li><code>`Fg _</code> is the foreground color or high-intensity color on <code>`Hi _</code>.</li><li><code>`Bg _</code> is the background color or high-intensity color on <code>`Hi _</code>.</li><li><code>#color</code> is the foreground color, <b>deprecated</b> use <code>`Fg #color</code> instead.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-styled"><a href="#val-styled" class="anchor"></a><code><span><span class="keyword">val</span> styled : <span><a href="#type-style">style</a> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>styled s pp</code> formats like <code>pp</code> but styled with <code>s</code>.</p></div></div><h3 id="style-rendering-control"><a href="#style-rendering-control" class="anchor"></a>Style rendering control</h3><div class="odoc-spec"><div class="spec type anchored" id="type-style_renderer"><a href="#type-style_renderer" class="anchor"></a><code><span><span class="keyword">type</span> style_renderer</span><span> = </span><span>[ </span></code><ol><li id="type-style_renderer.Ansi_tty" class="def variant constructor anchored"><a href="#type-style_renderer.Ansi_tty" class="anchor"></a><code><span>| </span><span>`Ansi_tty</span></code></li><li id="type-style_renderer.None" class="def variant constructor anchored"><a href="#type-style_renderer.None" class="anchor"></a><code><span>| </span><span>`None</span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>The type for style renderers.</p><ul><li><code>`Ansi_tty</code>, renders styles using <a href="http://www.ecma-international.org/publications/standards/Ecma-048.htm">ANSI escape sequences</a>.</li><li><code>`None</code>, styled rendering has no effect.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-style_renderer"><a href="#val-style_renderer" class="anchor"></a><code><span><span class="keyword">val</span> style_renderer : <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-style_renderer">style_renderer</a></span></code></div><div class="spec-doc"><p><code>style_renderer ppf</code> is the style renderer used by <code>ppf</code>. If <a href="#val-set_style_renderer"><code>set_style_renderer</code></a> has never been called on <code>ppf</code> this is <code>`None</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_style_renderer"><a href="#val-set_style_renderer" class="anchor"></a><code><span><span class="keyword">val</span> set_style_renderer : <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-style_renderer">style_renderer</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>set_style_renderer ppf r</code> sets the style renderer of <code>ppf</code> to <code>r</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if <code>ppf</code> is <code>Format.str_formatter</code>: its renderer is always <code>`None</code>.</p></li></ul></div></div><h2 id="stringconverters"><a href="#stringconverters" class="anchor"></a>Converting with string value converters</h2><div class="odoc-spec"><div class="spec value anchored" id="val-of_to_string"><a href="#val-of_to_string" class="anchor"></a><code><span><span class="keyword">val</span> of_to_string : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> string)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>of_to_string f ppf v</code> is <code>string ppf (f v)</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_to_string"><a href="#val-to_to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_to_string : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p><code>to_to_string pp_v v</code> is <code>strf &quot;%a&quot; pp_v v</code>.</p></div></div><h2 id="deprecated"><a href="#deprecated" class="anchor"></a>Deprecated</h2><div class="odoc-spec"><div class="spec value anchored" id="val-strf"><a href="#val-strf" class="anchor"></a><code><span><span class="keyword">val</span> strf : <span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, string)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-str"><code>str</code></a> instead.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-kstrf"><a href="#val-kstrf" class="anchor"></a><code><span><span class="keyword">val</span> kstrf :
<span><span>(<span>string <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'b</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span class="type-var">'a</span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'b</span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-kstr"><code>kstr</code></a> instead.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-strf_like"><a href="#val-strf_like" class="anchor"></a><code><span><span class="keyword">val</span> strf_like :
<span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, string)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-str_like"><code>str_like</code></a> instead.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-always"><a href="#val-always" class="anchor"></a><code><span><span class="keyword">val</span> always : <span><span><span>(unit, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-any"><code>any</code></a> instead.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unit"><a href="#val-unit" class="anchor"></a><code><span><span class="keyword">val</span> unit : <span><span><span>(unit, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span> <span>unit <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-any"><code>any</code></a>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-prefix"><a href="#val-prefix" class="anchor"></a><code><span><span class="keyword">val</span> prefix : <span><span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-(++)"><code>(++)</code></a>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-suffix"><a href="#val-suffix" class="anchor"></a><code><span><span class="keyword">val</span> suffix : <span><span>unit <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-(++)"><code>(++)</code></a>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-styled_unit"><a href="#val-styled_unit" class="anchor"></a><code><span><span class="keyword">val</span> styled_unit :
<span><a href="#type-style">style</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(unit, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit)</span> <a href="../../ocaml/Stdlib/index.html#type-format">format</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <code>styled s (any fmt)</code> instead</p></li></ul></div></div><h2 id="nameconv"><a href="#nameconv" class="anchor"></a>Naming conventions</h2><p>Given a type <code>ty</code> use:</p><ul><li><code>pp_ty</code> for a pretty printer that provides full control to the client and does not wrap the formatted value in an enclosing box. See <a href="#stdlib" title="stdlib">these examples</a>.</li><li><code>pp_dump_ty</code> for a pretty printer that provides little control over the pretty-printing process, wraps the rendering in an enclosing box and tries as much as possible to respect the OCaml syntax. These pretty-printers should make it easy to inspect and understand values of the given type, they are mainly used for quick printf debugging and/or toplevel interaction. See <a href="Dump/index.html#stdlib" title="stdlib">these examples</a>.</li></ul><p>If you are in a situation where making a difference between <code>dump_ty</code> and <code>pp_ty</code> doesn't make sense then use <code>pp_ty</code>.</p><p>For a type <code>ty</code> that is the main type of the module (the &quot;<code>M.t</code>&quot; convention) drop the suffix, that is simply use <code>M.pp</code> and <code>M.pp_dump</code>.</p></div></body></html>