ocaml-containers/3.11/containers/CCSexp/index.html
2023-02-07 13:11:03 -05:00

4 lines
No EOL
20 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>CCSexp (containers.CCSexp)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.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">containers</a> &#x00BB; CCSexp</nav><header class="odoc-preamble"><h1>Module <code><span>CCSexp</span></code></h1><p>Handling S-expressions</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0 moved into containers-core, previously in [containers.sexp]</li></ul></header><nav class="odoc-toc"><ul><li><a href="#basics">Basics</a></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec type" id="type-or_error" class="anchored"><a href="#type-or_error" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a or_error</span></span><span> = <span><span>( <span class="type-var">'a</span>, string )</span> <span class="xref-unresolved">Stdlib</span>.result</span></span></code></div></div><div class="odoc-spec"><div class="spec type" id="type-gen" class="anchored"><a href="#type-gen" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a gen</span></span><span> = <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div></div><div class="odoc-spec"><div class="spec module-type" id="module-type-SEXP" class="anchored"><a href="#module-type-SEXP" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> SEXP</span><span> = <a href="../CCSexp_intf/module-type-SEXP/index.html">CCSexp_intf.SEXP</a></span></code></div></div><div class="odoc-spec"><div class="spec module-type" id="module-type-S" class="anchored"><a href="#module-type-S" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> S</span><span> = <a href="../CCSexp_intf/module-type-S/index.html">CCSexp_intf.S</a></span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-Make" class="anchored"><a href="#module-Make" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Make/index.html">Make</a></span><span> (<a href="Make/argument-1-Sexp/index.html">Sexp</a> : <a href="../CCSexp_intf/module-type-SEXP/index.html">SEXP</a>) : <a href="../CCSexp_intf/module-type-S/index.html">S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../CCSexp_intf/module-type-S/index.html#type-t">t</a> = <a href="Make/argument-1-Sexp/index.html#type-t">Sexp.t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../CCSexp_intf/module-type-S/index.html#type-loc">loc</a> = <a href="Make/argument-1-Sexp/index.html#type-loc">Sexp.loc</a></span></span></code></div></div><h3 id="basics"><a href="#basics" class="anchor"></a>Basics</h3><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>[ </span></code><table><tr id="type-t.Atom" class="anchored"><td class="def constructor"><a href="#type-t.Atom" class="anchor"></a><code><span>| </span></code><code><span>`Atom <span class="keyword">of</span> string</span></code></td></tr><tr id="type-t.List" class="anchored"><td class="def constructor"><a href="#type-t.List" class="anchor"></a><code><span>| </span></code><code><span>`List <span class="keyword">of</span> <span><a href="#type-t">t</a> list</span></span></code></td></tr></table><code><span> ]</span></code></div><div class="spec-doc"><p>A simple, structural representation of S-expressions.</p></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../CCSexp_intf/module-type-S/index.html">S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../CCSexp_intf/module-type-S/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../CCSexp_intf/module-type-S0/index.html">CCSexp_intf.S0</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../CCSexp_intf/module-type-S0/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec type" id="type-sexp" class="anchored"><a href="#type-sexp" class="anchor"></a><code><span><span class="keyword">type</span> sexp</span><span> = <a href="#type-t">t</a></span></code></div></div><h3 id="re-exports_2"><a href="#re-exports_2" class="anchor"></a>Re-exports</h3><div class="odoc-spec"><div class="spec value" id="val-list" class="anchored"><a href="#val-list" class="anchor"></a><code><span><span class="keyword">val</span> list : <span><span><a href="#type-t">t</a> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Make a Sexpr of this list.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><h3 id="constructors_2"><a href="#constructors_2" class="anchor"></a>Constructors</h3><div class="odoc-spec"><div class="spec value" id="val-of_int" class="anchored"><a href="#val-of_int" class="anchor"></a><code><span><span class="keyword">val</span> of_int : <span>int <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_bool" class="anchored"><a href="#val-of_bool" class="anchor"></a><code><span><span class="keyword">val</span> of_bool : <span>bool <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_list" class="anchored"><a href="#val-of_list" class="anchor"></a><code><span><span class="keyword">val</span> of_list : <span><span><a href="#type-t">t</a> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_rev_list" class="anchored"><a href="#val-of_rev_list" class="anchor"></a><code><span><span class="keyword">val</span> of_rev_list : <span><span><a href="#type-t">t</a> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Reverse the list.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_float" class="anchored"><a href="#val-of_float" class="anchor"></a><code><span><span class="keyword">val</span> of_float : <span>float <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_unit" class="anchored"><a href="#val-of_unit" class="anchor"></a><code><span><span class="keyword">val</span> of_unit : <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_pair" class="anchored"><a href="#val-of_pair" class="anchor"></a><code><span><span class="keyword">val</span> of_pair : <span><span>(<a href="#type-t">t</a> * <a href="#type-t">t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_triple" class="anchored"><a href="#val-of_triple" class="anchor"></a><code><span><span class="keyword">val</span> of_triple : <span><span>(<a href="#type-t">t</a> * <a href="#type-t">t</a> * <a href="#type-t">t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_quad" class="anchored"><a href="#val-of_quad" class="anchor"></a><code><span><span class="keyword">val</span> of_quad : <span><span>(<a href="#type-t">t</a> * <a href="#type-t">t</a> * <a href="#type-t">t</a> * <a href="#type-t">t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_variant" class="anchored"><a href="#val-of_variant" class="anchor"></a><code><span><span class="keyword">val</span> of_variant : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span><a href="#type-t">t</a> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>of_variant name args</code> is used to encode algebraic variants into a S-expr. For instance <code>of_variant &quot;some&quot; [of_int 1]</code> represents the value <code>Some 1</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_field" class="anchored"><a href="#val-of_field" class="anchor"></a><code><span><span class="keyword">val</span> of_field : <span>string <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Used to represent one record field.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_record" class="anchored"><a href="#val-of_record" class="anchor"></a><code><span><span class="keyword">val</span> of_record : <span><span><span>(string * <a href="#type-t">t</a>)</span> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Represent a record by its named fields.</p></div></div><h3 id="printing_2"><a href="#printing_2" class="anchor"></a>Printing</h3><div class="odoc-spec"><div class="spec value" id="val-to_buf" class="anchored"><a href="#val-to_buf" class="anchor"></a><code><span><span class="keyword">val</span> to_buf : <span><span class="xref-unresolved">Stdlib</span>.Buffer.t <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-to_string" class="anchored"><a href="#val-to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_string : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-to_file" class="anchored"><a href="#val-to_file" class="anchor"></a><code><span><span class="keyword">val</span> to_file : <span>string <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-to_file_iter" class="anchored"><a href="#val-to_file_iter" class="anchor"></a><code><span><span class="keyword">val</span> to_file_iter : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span><a href="#type-t">t</a> <a href="../CCSexp_intf/index.html#type-iter">CCSexp_intf.iter</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Print the given iter of expressions to a file.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_chan" class="anchored"><a href="#val-to_chan" class="anchor"></a><code><span><span class="keyword">val</span> to_chan : <span><span class="xref-unresolved">Stdlib</span>.out_channel <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-pp" class="anchored"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Pretty-printer nice on human eyes (including indentation).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-pp_noindent" class="anchored"><a href="#val-pp_noindent" class="anchor"></a><code><span><span class="keyword">val</span> pp_noindent : <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Raw, direct printing as compact as possible.</p></div></div><h3 id="parsing_3"><a href="#parsing_3" class="anchor"></a>Parsing</h3><div class="odoc-spec"><div class="spec value" id="val-parse_string" class="anchored"><a href="#val-parse_string" class="anchor"></a><code><span><span class="keyword">val</span> parse_string : <span>string <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div><div class="spec-doc"><p>Parse a string.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_string_list" class="anchored"><a href="#val-parse_string_list" class="anchor"></a><code><span><span class="keyword">val</span> parse_string_list : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span><a href="#type-t">t</a> list</span> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div><div class="spec-doc"><p>Parse a string into a list of S-exprs.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_chan" class="anchored"><a href="#val-parse_chan" class="anchor"></a><code><span><span class="keyword">val</span> parse_chan : <span><span class="xref-unresolved">Stdlib</span>.in_channel <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div><div class="spec-doc"><p>Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else <b>after</b> the S-exp).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_chan_gen" class="anchored"><a href="#val-parse_chan_gen" class="anchor"></a><code><span><span class="keyword">val</span> parse_chan_gen :
<span><span class="xref-unresolved">Stdlib</span>.in_channel <span class="arrow">&#45;&gt;</span></span>
<span><span><a href="#type-t">t</a> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span> <a href="../CCSexp_intf/index.html#type-gen">CCSexp_intf.gen</a></span></span></code></div><div class="spec-doc"><p>Parse a channel into a generator of S-expressions.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_chan_list" class="anchored"><a href="#val-parse_chan_list" class="anchor"></a><code><span><span class="keyword">val</span> parse_chan_list : <span><span class="xref-unresolved">Stdlib</span>.in_channel <span class="arrow">&#45;&gt;</span></span> <span><span><a href="#type-t">t</a> list</span> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_file" class="anchored"><a href="#val-parse_file" class="anchor"></a><code><span><span class="keyword">val</span> parse_file : <span>string <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div><div class="spec-doc"><p>Open the file and read a S-exp from it.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-parse_file_list" class="anchored"><a href="#val-parse_file_list" class="anchor"></a><code><span><span class="keyword">val</span> parse_file_list : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span><a href="#type-t">t</a> list</span> <a href="../CCSexp_intf/index.html#type-or_error">CCSexp_intf.or_error</a></span></span></code></div><div class="spec-doc"><p>Open the file and read a S-exp from it.</p></div></div></details></div><div class="odoc-spec"><div class="spec type" id="type-loc" class="anchored"><a href="#type-loc" class="anchor"></a><code><span><span class="keyword">type</span> loc</span></code></div><div class="spec-doc"><p>Locations for the S-expressions.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.3</li></ul></div></div><h3 id="parsing_4"><a href="#parsing_4" class="anchor"></a>Parsing</h3><div class="odoc-spec"><div class="spec type" id="type-parse_result" class="anchored"><a href="#type-parse_result" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a parse_result</span></span><span> = </span></code><table><tr id="type-parse_result.Yield" class="anchored"><td class="def variant constructor"><a href="#type-parse_result.Yield" class="anchor"></a><code><span>| </span><span><span class="constructor">Yield</span> <span class="keyword">of</span> <span class="type-var">'a</span></span></code></td></tr><tr id="type-parse_result.Fail" class="anchored"><td class="def variant constructor"><a href="#type-parse_result.Fail" class="anchor"></a><code><span>| </span><span><span class="constructor">Fail</span> <span class="keyword">of</span> string</span></code></td></tr><tr id="type-parse_result.End" class="anchored"><td class="def variant constructor"><a href="#type-parse_result.End" class="anchor"></a><code><span>| </span><span><span class="constructor">End</span></span></code></td></tr></table></div><div class="spec-doc"><p>A parser of <code>'a</code> can return <code>Yield x</code> when it parsed a value, or <code>Fail e</code> when a parse error was encountered, or <code>End</code> if the input was empty.</p></div></div><div class="odoc-spec"><div class="spec module" id="module-Decoder" class="anchored"><a href="#module-Decoder" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Decoder/index.html">Decoder</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></details></div><div class="odoc-spec"><div class="spec value" id="val-equal" class="anchored"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-compare" class="anchored"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-atom" class="anchored"><a href="#val-atom" class="anchor"></a><code><span><span class="keyword">val</span> atom : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Build an atom directly from a string.</p></div></div></div></body></html>