mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
2 lines
No EOL
20 KiB
HTML
2 lines
No EOL
20 KiB
HTML
<!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.0.2"/><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> » 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">-></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> </span><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> </span><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> </span><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-atom" class="anchored"><a href="#val-atom" class="anchor"></a><code><span><span class="keyword">val</span> atom : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Make an atom out of this string.</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-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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></span></span> <span><span><a href="#type-t">t</a> list</span> <span class="arrow">-></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 "some" [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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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> </span><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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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> |