ocaml-trace/sexplib0/Sexplib0/Sexp_conv/index.html
2024-08-26 14:16:27 +00:00

29 lines
No EOL
43 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>Sexp_conv (sexplib0.Sexplib0.Sexp_conv)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.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">sexplib0</a> &#x00BB; <a href="../index.html">Sexplib0</a> &#x00BB; Sexp_conv</nav><header class="odoc-preamble"><h1>Module <code><span>Sexplib0.Sexp_conv</span></code></h1><p>Utility Module for S-expression Conversions</p></header><nav class="odoc-toc"><ul><li><a href="#conversion-of-ocaml-values-to-s-expressions">Conversion of OCaml-values to S-expressions</a></li><li><a href="#conversion-of-s-expressions-to-ocaml-values">Conversion of S-expressions to OCaml-values</a></li></ul></nav><div class="odoc-content"><h6 id="conversion-of-ocaml-values-to-s-expressions"><a href="#conversion-of-ocaml-values-to-s-expressions" class="anchor"></a>Conversion of OCaml-values to S-expressions</h6><div class="odoc-spec"><div class="spec value anchored" id="val-default_string_of_float"><a href="#val-default_string_of_float" class="anchor"></a><code><span><span class="keyword">val</span> default_string_of_float : <span><span>(<span>float <span class="arrow">&#45;&gt;</span></span> string)</span> <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p><code>default_string_of_float</code> reference to the default function used to convert floats to strings.</p><p>Initially set to <code>fun n -&gt; sprintf &quot;%.20G&quot; n</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-write_old_option_format"><a href="#val-write_old_option_format" class="anchor"></a><code><span><span class="keyword">val</span> write_old_option_format : <span>bool <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p><code>write_old_option_format</code> reference for the default option format used to write option values. If set to <code>true</code>, the old-style option format will be used, the new-style one otherwise.</p><p>Initially set to <code>true</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-read_old_option_format"><a href="#val-read_old_option_format" class="anchor"></a><code><span><span class="keyword">val</span> read_old_option_format : <span>bool <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p><code>read_old_option_format</code> reference for the default option format used to read option values. <code>Of_sexp_error</code> will be raised with old-style option values if this reference is set to <code>false</code>. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.</p><p>Initially set to <code>true</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-list_map"><a href="#val-list_map" class="anchor"></a><code><span><span class="keyword">val</span> list_map : <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">'a</span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> list</span></span></code></div><div class="spec-doc"><p>We re-export a tail recursive map function, because some modules override the standard library functions (e.g. <code>StdLabels</code>) which wrecks havoc with the camlp4 extension.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_unit"><a href="#val-sexp_of_unit" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_unit : <span>unit <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_unit ()</code> converts a value of type <code>unit</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_bool"><a href="#val-sexp_of_bool" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_bool : <span>bool <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_bool b</code> converts the value <code>x</code> of type <code>bool</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_string"><a href="#val-sexp_of_string" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_string : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_string str</code> converts the value <code>str</code> of type <code>string</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_bytes"><a href="#val-sexp_of_bytes" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_bytes : <span>bytes <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_bytes str</code> converts the value <code>str</code> of type <code>bytes</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_char"><a href="#val-sexp_of_char" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_char : <span>char <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_char c</code> converts the value <code>c</code> of type <code>char</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_int"><a href="#val-sexp_of_int" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_int : <span>int <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_int n</code> converts the value <code>n</code> of type <code>int</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_float"><a href="#val-sexp_of_float" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_float : <span>float <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_float n</code> converts the value <code>n</code> of type <code>float</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_int32"><a href="#val-sexp_of_int32" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_int32 : <span>int32 <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_int32 n</code> converts the value <code>n</code> of type <code>int32</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_int64"><a href="#val-sexp_of_int64" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_int64 : <span>int64 <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_int64 n</code> converts the value <code>n</code> of type <code>int64</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_nativeint"><a href="#val-sexp_of_nativeint" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_nativeint : <span>nativeint <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_nativeint n</code> converts the value <code>n</code> of type <code>nativeint</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_ref"><a href="#val-sexp_of_ref" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_ref : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_ref conv r</code> converts the value <code>r</code> of type <code>'a ref</code> to an S-expression. Uses <code>conv</code> to convert values of type <code>'a</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_lazy_t"><a href="#val-sexp_of_lazy_t" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_lazy_t : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> lazy_t</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_lazy_t conv l</code> converts the value <code>l</code> of type <code>'a lazy_t</code> to an S-expression. Uses <code>conv</code> to convert values of type <code>'a</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_option"><a href="#val-sexp_of_option" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_option : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_option conv opt</code> converts the value <code>opt</code> of type <code>'a
option</code> to an S-expression. Uses <code>conv</code> to convert values of type <code>'a</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_pair"><a href="#val-sexp_of_pair" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_pair : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.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> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_pair conv1 conv2 pair</code> converts a pair to an S-expression. It uses its first argument to convert the first element of the pair, and its second argument to convert the second element of the pair.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_triple"><a href="#val-sexp_of_triple" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_triple :
<span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span class="type-var">'c</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.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 class="type-var">'c</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_triple conv1 conv2 conv3 triple</code> converts a triple to an S-expression using <code>conv1</code>, <code>conv2</code>, and <code>conv3</code> to convert its elements.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_list"><a href="#val-sexp_of_list" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_list : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_list conv lst</code> converts the value <code>lst</code> of type <code>'a
list</code> to an S-expression. Uses <code>conv</code> to convert values of type <code>'a</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_array"><a href="#val-sexp_of_array" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_array : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> array</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_array conv ar</code> converts the value <code>ar</code> of type <code>'a
array</code> to an S-expression. Uses <code>conv</code> to convert values of type <code>'a</code> to an S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_hashtbl"><a href="#val-sexp_of_hashtbl" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_hashtbl :
<span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.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> <span class="arrow">&#45;&gt;</span></span>
<a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_hashtbl conv_key conv_value htbl</code> converts the value <code>htbl</code> of type <code>('a, 'b) Hashtbl.t</code> to an S-expression. Uses <code>conv_key</code> to convert the hashtable keys of type <code>'a</code>, and <code>conv_value</code> to convert hashtable values of type <code>'b</code> to S-expressions.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_opaque"><a href="#val-sexp_of_opaque" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_opaque : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_opaque x</code> converts the value <code>x</code> of opaque type to an S-expression. This means the user need not provide converters, but the result cannot be interpreted.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_fun"><a href="#val-sexp_of_fun" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_fun : <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> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_fun f</code> converts the value <code>f</code> of function type to a dummy S-expression. Functions cannot be serialized as S-expressions, but at least a placeholder can be generated for pretty-printing.</p></div></div><h6 id="conversion-of-s-expressions-to-ocaml-values"><a href="#conversion-of-s-expressions-to-ocaml-values" class="anchor"></a>Conversion of S-expressions to OCaml-values</h6><div class="odoc-spec"><div class="spec exception anchored" id="exception-Of_sexp_error"><a href="#exception-Of_sexp_error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Of_sexp_error</span> <span class="keyword">of</span> exn * <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>Of_sexp_error (exn, sexp)</code> the exception raised when an S-expression could not be successfully converted to an OCaml-value.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-record_check_extra_fields"><a href="#val-record_check_extra_fields" class="anchor"></a><code><span><span class="keyword">val</span> record_check_extra_fields : <span>bool <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p><code>record_check_extra_fields</code> checks for extra (= unknown) fields in record S-expressions.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_sexp_error"><a href="#val-of_sexp_error" class="anchor"></a><code><span><span class="keyword">val</span> of_sexp_error : <span>string <span class="arrow">&#45;&gt;</span></span> <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>of_sexp_error reason sexp</code> </p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Of_sexp_error</span> <p>(Failure reason, sexp).</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_sexp_error_exn"><a href="#val-of_sexp_error_exn" class="anchor"></a><code><span><span class="keyword">val</span> of_sexp_error_exn : <span>exn <span class="arrow">&#45;&gt;</span></span> <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>of_sexp_error exc sexp</code> </p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Of_sexp_error</span> <p>(exc, sexp).</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unit_of_sexp"><a href="#val-unit_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> unit_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>unit_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>unit</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bool_of_sexp"><a href="#val-bool_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> bool_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>bool_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>bool</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string_of_sexp"><a href="#val-string_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> string_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p><code>string_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>string</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bytes_of_sexp"><a href="#val-bytes_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> bytes_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> bytes</span></code></div><div class="spec-doc"><p><code>bytes_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>bytes</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-char_of_sexp"><a href="#val-char_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> char_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> char</span></code></div><div class="spec-doc"><p><code>char_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>char</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_of_sexp"><a href="#val-int_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> int_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>int_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>int</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_of_sexp"><a href="#val-float_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> float_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p><code>float_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>float</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32_of_sexp"><a href="#val-int32_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> int32_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> int32</span></code></div><div class="spec-doc"><p><code>int32_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>int32</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64_of_sexp"><a href="#val-int64_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> int64_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> int64</span></code></div><div class="spec-doc"><p><code>int64_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>int64</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint_of_sexp"><a href="#val-nativeint_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> nativeint_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> nativeint</span></code></div><div class="spec-doc"><p><code>nativeint_of_sexp sexp</code> converts S-expression <code>sexp</code> to a value of type <code>nativeint</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ref_of_sexp"><a href="#val-ref_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> ref_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</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="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span></span></code></div><div class="spec-doc"><p><code>ref_of_sexp conv sexp</code> converts S-expression <code>sexp</code> to a value of type <code>'a ref</code> using conversion function <code>conv</code>, which converts an S-expression to a value of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lazy_t_of_sexp"><a href="#val-lazy_t_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> lazy_t_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</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="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> lazy_t</span></span></code></div><div class="spec-doc"><p><code>lazy_t_of_sexp conv sexp</code> converts S-expression <code>sexp</code> to a value of type <code>'a lazy_t</code> using conversion function <code>conv</code>, which converts an S-expression to a value of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-option_of_sexp"><a href="#val-option_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> option_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</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="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p><code>option_of_sexp conv sexp</code> converts S-expression <code>sexp</code> to a value of type <code>'a option</code> using conversion function <code>conv</code>, which converts an S-expression to a value of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pair_of_sexp"><a href="#val-pair_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> pair_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> * <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>pair_of_sexp conv1 conv2 sexp</code> converts S-expression <code>sexp</code> to a pair of type <code>'a * 'b</code> using conversion functions <code>conv1</code> and <code>conv2</code>, which convert S-expressions to values of type <code>'a</code> and <code>'b</code> respectively.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-triple_of_sexp"><a href="#val-triple_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> triple_of_sexp :
<span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'c</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span> * <span class="type-var">'b</span> * <span class="type-var">'c</span></span></code></div><div class="spec-doc"><p><code>triple_of_sexp conv1 conv2 conv3 sexp</code> converts S-expression <code>sexp</code> to a triple of type <code>'a * 'b * 'c</code> using conversion functions <code>conv1</code>, <code>conv2</code>, and <code>conv3</code>, which convert S-expressions to values of type <code>'a</code>, <code>'b</code>, and <code>'c</code> respectively.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-list_of_sexp"><a href="#val-list_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> list_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</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="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> list</span></span></code></div><div class="spec-doc"><p><code>list_of_sexp conv sexp</code> converts S-expression <code>sexp</code> to a value of type <code>'a list</code> using conversion function <code>conv</code>, which converts an S-expression to a value of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-array_of_sexp"><a href="#val-array_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> array_of_sexp : <span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</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="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> array</span></span></code></div><div class="spec-doc"><p><code>array_of_sexp conv sexp</code> converts S-expression <code>sexp</code> to a value of type <code>'a array</code> using conversion function <code>conv</code>, which converts an S-expression to a value of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hashtbl_of_sexp"><a href="#val-hashtbl_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> hashtbl_of_sexp :
<span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</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></span></code></div><div class="spec-doc"><p><code>hashtbl_of_sexp conv_key conv_value sexp</code> converts S-expression <code>sexp</code> to a value of type <code>('a, 'b) Hashtbl.t</code> using conversion function <code>conv_key</code>, which converts an S-expression to hashtable key of type <code>'a</code>, and function <code>conv_value</code>, which converts an S-expression to hashtable value of type <code>'b</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-opaque_of_sexp"><a href="#val-opaque_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> opaque_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>opaque_of_sexp sexp</code> </p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Of_sexp_error</span> <p>when attempting to convert an S-expression to an opaque value.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fun_of_sexp"><a href="#val-fun_of_sexp" class="anchor"></a><code><span><span class="keyword">val</span> fun_of_sexp : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fun_of_sexp sexp</code> </p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Of_sexp_error</span> <p>when attempting to convert an S-expression to a function.</p></li></ul></div></div><p>Sexp Grammars</p><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_grammar_with_tags"><a href="#val-sexp_grammar_with_tags" class="anchor"></a><code><span><span class="keyword">val</span> sexp_grammar_with_tags :
<span><a href="../Sexp_grammar/index.html#type-grammar">Sexp_grammar.grammar</a> <span class="arrow">&#45;&gt;</span></span>
<span>tags:<span><span>(string * <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> list</span> <span class="arrow">&#45;&gt;</span></span>
<a href="../Sexp_grammar/index.html#type-grammar">Sexp_grammar.grammar</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_grammar_with_tag_list"><a href="#val-sexp_grammar_with_tag_list" class="anchor"></a><code><span><span class="keyword">val</span> sexp_grammar_with_tag_list :
<span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-with_tag_list">Sexp_grammar.with_tag_list</a></span> <span class="arrow">&#45;&gt;</span></span>
<span>tags:<span><span>(string * <a href="../Sexp/index.html#type-t">Sexp.t</a>)</span> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-with_tag_list">Sexp_grammar.with_tag_list</a></span></span></code></div></div><p>Sexp grammar definitions.</p><div class="odoc-spec"><div class="spec value anchored" id="val-unit_sexp_grammar"><a href="#val-unit_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> unit_sexp_grammar : <span>unit <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bool_sexp_grammar"><a href="#val-bool_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> bool_sexp_grammar : <span>bool <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string_sexp_grammar"><a href="#val-string_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> string_sexp_grammar : <span>string <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bytes_sexp_grammar"><a href="#val-bytes_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> bytes_sexp_grammar : <span>bytes <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-char_sexp_grammar"><a href="#val-char_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> char_sexp_grammar : <span>char <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_sexp_grammar"><a href="#val-int_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> int_sexp_grammar : <span>int <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_sexp_grammar"><a href="#val-float_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> float_sexp_grammar : <span>float <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32_sexp_grammar"><a href="#val-int32_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> int32_sexp_grammar : <span>int32 <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64_sexp_grammar"><a href="#val-int64_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> int64_sexp_grammar : <span>int64 <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint_sexp_grammar"><a href="#val-nativeint_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> nativeint_sexp_grammar : <span>nativeint <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_t_sexp_grammar"><a href="#val-sexp_t_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> sexp_t_sexp_grammar : <span><a href="../Sexp/index.html#type-t">Sexp.t</a> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ref_sexp_grammar"><a href="#val-ref_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> ref_sexp_grammar : <span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="../../../ocaml/Stdlib/index.html#type-ref">ref</a></span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lazy_t_sexp_grammar"><a href="#val-lazy_t_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> lazy_t_sexp_grammar : <span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> lazy_t</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-option_sexp_grammar"><a href="#val-option_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> option_sexp_grammar : <span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-list_sexp_grammar"><a href="#val-list_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> list_sexp_grammar : <span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-array_sexp_grammar"><a href="#val-array_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> array_sexp_grammar : <span><span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> array</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-opaque_sexp_grammar"><a href="#val-opaque_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> opaque_sexp_grammar : <span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fun_sexp_grammar"><a href="#val-fun_sexp_grammar" class="anchor"></a><code><span><span class="keyword">val</span> fun_sexp_grammar : <span><span class="type-var">'a</span> <a href="../Sexp_grammar/index.html#type-t">Sexp_grammar.t</a></span></span></code></div></div><p>Exception converters</p><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_exn"><a href="#val-sexp_of_exn" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_exn : <span>exn <span class="arrow">&#45;&gt;</span></span> <a href="../Sexp/index.html#type-t">Sexp.t</a></span></code></div><div class="spec-doc"><p><code>sexp_of_exn exc</code> converts exception <code>exc</code> to an S-expression. If no suitable converter is found, the standard converter in <code>Printexc</code> will be used to generate an atomic S-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-printexc_prefer_sexp"><a href="#val-printexc_prefer_sexp" class="anchor"></a><code><span><span class="keyword">val</span> printexc_prefer_sexp : <span>exn <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Converts an exception to a string via sexp, falling back to <code>Printexc.to_string</code> if no sexp conversion is registered for this exception.</p><p>This is different from <code>Printexc.to_string</code> in that it additionally uses the sexp converters registered with <code>~printexc:false</code>. Another difference is that the behavior of <code>Printexc</code> can be overridden with <code>Printexc.register</code>, but here we always try sexp conversion first.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-sexp_of_exn_opt"><a href="#val-sexp_of_exn_opt" class="anchor"></a><code><span><span class="keyword">val</span> sexp_of_exn_opt : <span>exn <span class="arrow">&#45;&gt;</span></span> <span><a href="../Sexp/index.html#type-t">Sexp.t</a> option</span></span></code></div><div class="spec-doc"><p><code>sexp_of_exn_opt exc</code> converts exception <code>exc</code> to <code>Some sexp</code>. If no suitable converter is found, <code>None</code> is returned instead.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Exn_converter"><a href="#module-Exn_converter" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Exn_converter/index.html">Exn_converter</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></div></body></html>