moonpool/ocaml/Typedtree/index.html
2024-05-20 20:32:52 +00:00

80 lines
152 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>Typedtree (ocaml.Typedtree)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.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">ocaml</a> &#x00BB; Typedtree</nav><header class="odoc-preamble"><h1>Module <code><span>Typedtree</span></code></h1><p>Abstract syntax tree after typing</p></header><nav class="odoc-toc"><ul><li><a href="#extension-points">Extension points</a></li><li><a href="#core-language">Core language</a></li></ul></nav><div class="odoc-content"><p>By comparison with <a href="../Parsetree/index.html"><code>Parsetree</code></a>:</p><ul><li>Every <code>Longindent.t</code> is accompanied by a resolved <a href="../Path/index.html#type-t"><code>Path.t</code></a>.</li></ul><div class="odoc-spec"><div class="spec type anchored" id="type-partial"><a href="#type-partial" class="anchor"></a><code><span><span class="keyword">type</span> partial</span><span> = </span></code><ol><li id="type-partial.Partial" class="def variant constructor anchored"><a href="#type-partial.Partial" class="anchor"></a><code><span>| </span><span><span class="constructor">Partial</span></span></code></li><li id="type-partial.Total" class="def variant constructor anchored"><a href="#type-partial.Total" class="anchor"></a><code><span>| </span><span><span class="constructor">Total</span></span></code></li></ol></div></div><h2 id="extension-points"><a href="#extension-points" class="anchor"></a>Extension points</h2><div class="odoc-spec"><div class="spec type anchored" id="type-attribute"><a href="#type-attribute" class="anchor"></a><code><span><span class="keyword">type</span> attribute</span><span> = <a href="../Parsetree/index.html#type-attribute">Parsetree.attribute</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-attributes"><a href="#type-attributes" class="anchor"></a><code><span><span class="keyword">type</span> attributes</span><span> = <span><a href="#type-attribute">attribute</a> list</span></span></code></div></div><h2 id="core-language"><a href="#core-language" class="anchor"></a>Core language</h2><div class="odoc-spec"><div class="spec type anchored" id="type-value"><a href="#type-value" class="anchor"></a><code><span><span class="keyword">type</span> value</span><span> = </span></code><ol><li id="type-value.Value_pattern" class="def variant constructor anchored"><a href="#type-value.Value_pattern" class="anchor"></a><code><span>| </span><span><span class="constructor">Value_pattern</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-computation"><a href="#type-computation" class="anchor"></a><code><span><span class="keyword">type</span> computation</span><span> = </span></code><ol><li id="type-computation.Computation_pattern" class="def variant constructor anchored"><a href="#type-computation.Computation_pattern" class="anchor"></a><code><span>| </span><span><span class="constructor">Computation_pattern</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_category"><a href="#type-pattern_category" class="anchor"></a><code><span><span class="keyword">type</span> <span>_ pattern_category</span></span><span> = </span></code><ol><li id="type-pattern_category.Value" class="def variant constructor anchored"><a href="#type-pattern_category.Value" class="anchor"></a><code><span>| </span><span><span class="constructor">Value</span> : <span><a href="#type-value">value</a> <a href="#type-pattern_category">pattern_category</a></span></span></code></li><li id="type-pattern_category.Computation" class="def variant constructor anchored"><a href="#type-pattern_category.Computation" class="anchor"></a><code><span>| </span><span><span class="constructor">Computation</span> : <span><a href="#type-computation">computation</a> <a href="#type-pattern_category">pattern_category</a></span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern"><a href="#type-pattern" class="anchor"></a><code><span><span class="keyword">type</span> pattern</span><span> = <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-general_pattern"><a href="#type-general_pattern" class="anchor"></a><code><span><span class="keyword">and</span> <span>'k general_pattern</span></span><span> = <span><span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span> <a href="#type-pattern_data">pattern_data</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_data"><a href="#type-pattern_data" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a pattern_data</span></span><span> = </span><span>{</span></code><ol><li id="type-pattern_data.pat_desc" class="def record field anchored"><a href="#type-pattern_data.pat_desc" class="anchor"></a><code><span>pat_desc : <span class="type-var">'a</span>;</span></code></li><li id="type-pattern_data.pat_loc" class="def record field anchored"><a href="#type-pattern_data.pat_loc" class="anchor"></a><code><span>pat_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-pattern_data.pat_extra" class="def record field anchored"><a href="#type-pattern_data.pat_extra" class="anchor"></a><code><span>pat_extra : <span><span>(<a href="#type-pat_extra">pat_extra</a> * <a href="../Location/index.html#type-t">Location.t</a> * <a href="#type-attributes">attributes</a>)</span> list</span>;</span></code></li><li id="type-pattern_data.pat_type" class="def record field anchored"><a href="#type-pattern_data.pat_type" class="anchor"></a><code><span>pat_type : <a href="../Types/index.html#type-type_expr">Types.type_expr</a>;</span></code></li><li id="type-pattern_data.pat_env" class="def record field anchored"><a href="#type-pattern_data.pat_env" class="anchor"></a><code><span>pat_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-pattern_data.pat_attributes" class="def record field anchored"><a href="#type-pattern_data.pat_attributes" class="anchor"></a><code><span>pat_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pat_extra"><a href="#type-pat_extra" class="anchor"></a><code><span><span class="keyword">and</span> pat_extra</span><span> = </span></code><ol><li id="type-pat_extra.Tpat_constraint" class="def variant constructor anchored"><a href="#type-pat_extra.Tpat_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>P : T <code> pat_desc = P
; pat_extra = (Tpat_constraint T, _, _) :: ... </code></p><span class="comment-delim">*)</span></div></li><li id="type-pat_extra.Tpat_type" class="def variant constructor anchored"><a href="#type-pat_extra.Tpat_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_type</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>#tconst <code> pat_desc = disjunction
; pat_extra = (Tpat_type (P, &quot;tconst&quot;), _, _) :: ...</code></p><p>where <code>disjunction</code> is a <code>Tpat_or _</code> representing the branches of <code>tconst</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-pat_extra.Tpat_open" class="def variant constructor anchored"><a href="#type-pat_extra.Tpat_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_open</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Env/index.html#type-t">Env.t</a></span></code></li><li id="type-pat_extra.Tpat_unpack" class="def variant constructor anchored"><a href="#type-pat_extra.Tpat_unpack" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_unpack</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>(module P) <code> pat_desc = Tpat_var &quot;P&quot;
; pat_extra = (Tpat_unpack, _, _) :: ... </code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_desc"><a href="#type-pattern_desc" class="anchor"></a><code><span><span class="keyword">and</span> <span>'k pattern_desc</span></span><span> = </span></code><ol><li id="type-pattern_desc.Tpat_any" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_any" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_any</span> : <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>_</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_var" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_var</span> : <a href="../Ident/index.html#type-t">Ident.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>x</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_alias" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_alias</span> : <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span>
* <a href="../Ident/index.html#type-t">Ident.t</a>
* <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>P as a</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_constant" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_constant" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_constant</span> : <a href="../Asttypes/index.html#type-constant">Asttypes.constant</a> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>1, 'a', &quot;true&quot;, 1.0, 1l, 1L, 1n</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_tuple" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_tuple</span> : <span><span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> list</span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>(P1, ..., Pn)</p><p>Invariant: n &gt;= 2</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_construct" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_construct" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_construct</span> : <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Types/index.html#type-constructor_description">Types.constructor_description</a>
* <span><span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> list</span>
* <span><span>(<span><span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> list</span> * <a href="#type-core_type">core_type</a>)</span> option</span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>C (, None) C P (<code>P</code>, None) C (P1, ..., Pn) (<code>P1; ...; Pn</code>, None) C (P : t) (<code>P</code>, Some (, t)) C (P1, ..., Pn : t) (<code>P1; ...; Pn</code>, Some (, t)) C (type a) (P : t) (<code>P</code>, Some (<code>a</code>, t)) C (type a) (P1, ..., Pn : t) (<code>P1; ...; Pn</code>, Some (<code>a</code>, t))</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_variant" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_variant</span> : <a href="../Asttypes/index.html#type-label">Asttypes.label</a>
* <span><span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> option</span>
* <span><a href="../Types/index.html#type-row_desc">Types.row_desc</a> <a href="../Stdlib/index.html#type-ref">ref</a></span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>`A (None) `A P (Some P)</p><p>See <a href="../Types/index.html#type-row_desc"><code>Types.row_desc</code></a> for an explanation of the last parameter.</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_record" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_record</span> : <span><span>(<span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Types/index.html#type-label_description">Types.label_description</a>
* <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span>)</span>
list</span>
* <a href="../Asttypes/index.html#type-closed_flag">Asttypes.closed_flag</a> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code> l1=P1; ...; ln=Pn </code> (flag = Closed) <code> l1=P1; ...; ln=Pn; _</code> (flag = Open)</p><p>Invariant: n &gt; 0</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_array" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_array</span> : <span><span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> list</span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>| P1; ...; Pn |</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_lazy" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_lazy" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_lazy</span> : <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-value">value</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>lazy P</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_value" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_value</span> : <a href="#type-tpat_value_argument">tpat_value_argument</a> <span class="arrow">&#45;&gt;</span> <span><a href="#type-computation">computation</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>P</p><p>Invariant: Tpat_value pattern should not carry pat_attributes or pat_extra metadata coming from user syntax, which must be on the inner pattern node -- to facilitate searching for a certain value pattern constructor with a specific attributed.</p><p>To enforce this restriction, we made the argument of the Tpat_value constructor a private synonym of <code>pattern</code>, requiring you to use the <code>as_computation_pattern</code> function below instead of using the <code>Tpat_value</code> constructor directly.</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_exception" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_exception</span> : <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span> <span><a href="#type-computation">computation</a> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>exception P</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Tpat_or" class="def variant constructor anchored"><a href="#type-pattern_desc.Tpat_or" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpat_or</span> : <span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span>
* <span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span>
* <span><a href="../Types/index.html#type-row_desc">Types.row_desc</a> option</span> <span class="arrow">&#45;&gt;</span> <span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>P1 | P2</p><p><code>row_desc</code> = <code>Some _</code> when translating <code>Ppat_type _</code>, <code>None</code> otherwise.</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-tpat_value_argument"><a href="#type-tpat_value_argument" class="anchor"></a><code><span><span class="keyword">and</span> tpat_value_argument</span><span> = <span class="keyword">private</span> <span><a href="#type-value">value</a> <a href="#type-general_pattern">general_pattern</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-expression"><a href="#type-expression" class="anchor"></a><code><span><span class="keyword">and</span> expression</span><span> = </span><span>{</span></code><ol><li id="type-expression.exp_desc" class="def record field anchored"><a href="#type-expression.exp_desc" class="anchor"></a><code><span>exp_desc : <a href="#type-expression_desc">expression_desc</a>;</span></code></li><li id="type-expression.exp_loc" class="def record field anchored"><a href="#type-expression.exp_loc" class="anchor"></a><code><span>exp_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-expression.exp_extra" class="def record field anchored"><a href="#type-expression.exp_extra" class="anchor"></a><code><span>exp_extra : <span><span>(<a href="#type-exp_extra">exp_extra</a> * <a href="../Location/index.html#type-t">Location.t</a> * <a href="#type-attributes">attributes</a>)</span> list</span>;</span></code></li><li id="type-expression.exp_type" class="def record field anchored"><a href="#type-expression.exp_type" class="anchor"></a><code><span>exp_type : <a href="../Types/index.html#type-type_expr">Types.type_expr</a>;</span></code></li><li id="type-expression.exp_env" class="def record field anchored"><a href="#type-expression.exp_env" class="anchor"></a><code><span>exp_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-expression.exp_attributes" class="def record field anchored"><a href="#type-expression.exp_attributes" class="anchor"></a><code><span>exp_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-exp_extra"><a href="#type-exp_extra" class="anchor"></a><code><span><span class="keyword">and</span> exp_extra</span><span> = </span></code><ol><li id="type-exp_extra.Texp_constraint" class="def variant constructor anchored"><a href="#type-exp_extra.Texp_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>E : T</p><span class="comment-delim">*)</span></div></li><li id="type-exp_extra.Texp_coerce" class="def variant constructor anchored"><a href="#type-exp_extra.Texp_coerce" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_coerce</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> option</span> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>E :&gt; T <code>Texp_coerce (None, T)</code> E : T0 :&gt; T <code>Texp_coerce (Some T0, T)</code></p><span class="comment-delim">*)</span></div></li><li id="type-exp_extra.Texp_poly" class="def variant constructor anchored"><a href="#type-exp_extra.Texp_poly" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_poly</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Used for method bodies.</p><span class="comment-delim">*)</span></div></li><li id="type-exp_extra.Texp_newtype" class="def variant constructor anchored"><a href="#type-exp_extra.Texp_newtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_newtype</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>fun (type t) -&gt;</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-expression_desc"><a href="#type-expression_desc" class="anchor"></a><code><span><span class="keyword">and</span> expression_desc</span><span> = </span></code><ol><li id="type-expression_desc.Texp_ident" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_ident</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Types/index.html#type-value_description">Types.value_description</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>x M.x</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_constant" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_constant" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_constant</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-constant">Asttypes.constant</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>1, 'a', &quot;true&quot;, 1.0, 1l, 1L, 1n</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_let" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_let" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_let</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a> * <span><a href="#type-value_binding">value_binding</a> list</span> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>let P1 = E1 and ... and Pn = EN in E (flag = Nonrecursive) let rec P1 = E1 and ... and Pn = EN in E (flag = Recursive)</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_function" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_function" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_function</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-expression_desc.arg_label" class="def record field anchored"><a href="#type-expression_desc.arg_label" class="anchor"></a><code><span>arg_label : <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a>;</span></code></li><li id="type-expression_desc.param" class="def record field anchored"><a href="#type-expression_desc.param" class="anchor"></a><code><span>param : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-expression_desc.cases" class="def record field anchored"><a href="#type-expression_desc.cases" class="anchor"></a><code><span>cases : <span><span><a href="#type-value">value</a> <a href="#type-case">case</a></span> list</span>;</span></code></li><li id="type-expression_desc.partial" class="def record field anchored"><a href="#type-expression_desc.partial" class="anchor"></a><code><span>partial : <a href="#type-partial">partial</a>;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_fun</code> and <code>Pexp_function</code> both translate to <code>Texp_function</code>. See <a href="../Parsetree/index.html"><code>Parsetree</code></a> for more details.</p><p><code>param</code> is the identifier that is to be used to name the parameter of the function.</p><p>partial = <code>Partial</code> if the pattern match is partial <code>Total</code> otherwise.</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_apply" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_apply</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><span>(<a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <span><a href="#type-expression">expression</a> option</span>)</span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>E0 ~l1:E1 ... ~ln:En</p><p>The expression can be None if the expression is abstracted over this argument. It currently appears when a label is applied.</p><p>For example: let f x ~y = x + y in f ~y:3</p><p>The resulting typedtree for the application is: Texp_apply (Texp_ident &quot;f/1037&quot;, <code>(Nolabel, None);
(Labelled &quot;y&quot;, Some (Texp_constant Const_int 3))
</code>)</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_match" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_match" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_match</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><span><a href="#type-computation">computation</a> <a href="#type-case">case</a></span> list</span> * <a href="#type-partial">partial</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>match E0 with | P1 -&gt; E1 | P2 | exception P3 -&gt; E2 | exception P4 -&gt; E3</p><p><code>Texp_match (E0, [(P1, E1); (P2 | exception P3, E2);
(exception P4, E3)], _)</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_try" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_try" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_try</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><span><a href="#type-value">value</a> <a href="#type-case">case</a></span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>try E with P1 -&gt; E1 | ... | PN -&gt; EN</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_tuple" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_tuple</span> <span class="keyword">of</span> <span><a href="#type-expression">expression</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>(E1, ..., EN)</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_construct" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_construct" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_construct</span> <span class="keyword">of</span> <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Types/index.html#type-constructor_description">Types.constructor_description</a>
* <span><a href="#type-expression">expression</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>C C E <code>E</code> C (E1, ..., En) <code>E1;...;En</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_variant" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_variant</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-label">Asttypes.label</a> * <span><a href="#type-expression">expression</a> option</span></span></code></li><li id="type-expression_desc.Texp_record" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_record</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-expression_desc.fields" class="def record field anchored"><a href="#type-expression_desc.fields" class="anchor"></a><code><span>fields : <span><span>(<a href="../Types/index.html#type-label_description">Types.label_description</a> * <a href="#type-record_label_definition">record_label_definition</a>)</span> array</span>;</span></code></li><li id="type-expression_desc.representation" class="def record field anchored"><a href="#type-expression_desc.representation" class="anchor"></a><code><span>representation : <a href="../Types/index.html#type-record_representation">Types.record_representation</a>;</span></code></li><li id="type-expression_desc.extended_expression" class="def record field anchored"><a href="#type-expression_desc.extended_expression" class="anchor"></a><code><span>extended_expression : <span><a href="#type-expression">expression</a> option</span>;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code> l1=P1; ...; ln=Pn </code> (extended_expression = None) <code> E0 with l1=P1; ...; ln=Pn </code> (extended_expression = Some E0)</p><p>Invariant: n &gt; 0</p><p>If the type is <code> l1: t1; l2: t2 </code>, the expression <code> E0 with t2=P2 </code> is represented as Texp_record <code> fields = [| l1, Kept t1; l2 Override P2 |]; representation;
extended_expression = Some E0 </code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Texp_field" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_field" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_field</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Types/index.html#type-label_description">Types.label_description</a></span></code></li><li id="type-expression_desc.Texp_setfield" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_setfield" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_setfield</span> <span class="keyword">of</span> <a href="#type-expression">expression</a>
* <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Types/index.html#type-label_description">Types.label_description</a>
* <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_array" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_array</span> <span class="keyword">of</span> <span><a href="#type-expression">expression</a> list</span></span></code></li><li id="type-expression_desc.Texp_ifthenelse" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_ifthenelse" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_ifthenelse</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a> * <span><a href="#type-expression">expression</a> option</span></span></code></li><li id="type-expression_desc.Texp_sequence" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_sequence" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_sequence</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_while" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_while" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_while</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_for" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_for" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_for</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a>
* <a href="../Parsetree/index.html#type-pattern">Parsetree.pattern</a>
* <a href="#type-expression">expression</a>
* <a href="#type-expression">expression</a>
* <a href="../Asttypes/index.html#type-direction_flag">Asttypes.direction_flag</a>
* <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_send" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_send" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_send</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-meth">meth</a></span></code></li><li id="type-expression_desc.Texp_new" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_new" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_new</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Types/index.html#type-class_declaration">Types.class_declaration</a></span></code></li><li id="type-expression_desc.Texp_instvar" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_instvar" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_instvar</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <a href="../Path/index.html#type-t">Path.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li><li id="type-expression_desc.Texp_setinstvar" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_setinstvar" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_setinstvar</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <a href="../Path/index.html#type-t">Path.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_override" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_override" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_override</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-expression">expression</a>)</span> list</span></span></code></li><li id="type-expression_desc.Texp_letmodule" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_letmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_letmodule</span> <span class="keyword">of</span> <span><a href="../Ident/index.html#type-t">Ident.t</a> option</span>
* <span><span>string option</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Types/index.html#type-module_presence">Types.module_presence</a>
* <a href="#type-module_expr">module_expr</a>
* <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_letexception" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_letexception" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_letexception</span> <span class="keyword">of</span> <a href="#type-extension_constructor">extension_constructor</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_assert" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_assert" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_assert</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_lazy" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_lazy" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_lazy</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code></li><li id="type-expression_desc.Texp_object" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_object" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_object</span> <span class="keyword">of</span> <a href="#type-class_structure">class_structure</a> * <span>string list</span></span></code></li><li id="type-expression_desc.Texp_pack" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_pack" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_pack</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a></span></code></li><li id="type-expression_desc.Texp_letop" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_letop" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_letop</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-expression_desc.let_" class="def record field anchored"><a href="#type-expression_desc.let_" class="anchor"></a><code><span>let_ : <a href="#type-binding_op">binding_op</a>;</span></code></li><li id="type-expression_desc.ands" class="def record field anchored"><a href="#type-expression_desc.ands" class="anchor"></a><code><span>ands : <span><a href="#type-binding_op">binding_op</a> list</span>;</span></code></li><li id="type-expression_desc.param" class="def record field anchored"><a href="#type-expression_desc.param" class="anchor"></a><code><span>param : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-expression_desc.body" class="def record field anchored"><a href="#type-expression_desc.body" class="anchor"></a><code><span>body : <span><a href="#type-value">value</a> <a href="#type-case">case</a></span>;</span></code></li><li id="type-expression_desc.partial" class="def record field anchored"><a href="#type-expression_desc.partial" class="anchor"></a><code><span>partial : <a href="#type-partial">partial</a>;</span></code></li></ol><code><span>}</span></code></li><li id="type-expression_desc.Texp_unreachable" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_unreachable" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_unreachable</span></span></code></li><li id="type-expression_desc.Texp_extension_constructor" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_extension_constructor" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_extension_constructor</span> <span class="keyword">of</span> <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Path/index.html#type-t">Path.t</a></span></code></li><li id="type-expression_desc.Texp_open" class="def variant constructor anchored"><a href="#type-expression_desc.Texp_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Texp_open</span> <span class="keyword">of</span> <a href="#type-open_declaration">open_declaration</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>let open<code>!</code> M in e</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-meth"><a href="#type-meth" class="anchor"></a><code><span><span class="keyword">and</span> meth</span><span> = </span></code><ol><li id="type-meth.Tmeth_name" class="def variant constructor anchored"><a href="#type-meth.Tmeth_name" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmeth_name</span> <span class="keyword">of</span> string</span></code></li><li id="type-meth.Tmeth_val" class="def variant constructor anchored"><a href="#type-meth.Tmeth_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmeth_val</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a></span></code></li><li id="type-meth.Tmeth_ancestor" class="def variant constructor anchored"><a href="#type-meth.Tmeth_ancestor" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmeth_ancestor</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="../Path/index.html#type-t">Path.t</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-case"><a href="#type-case" class="anchor"></a><code><span><span class="keyword">and</span> <span>'k case</span></span><span> = </span><span>{</span></code><ol><li id="type-case.c_lhs" class="def record field anchored"><a href="#type-case.c_lhs" class="anchor"></a><code><span>c_lhs : <span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span>;</span></code></li><li id="type-case.c_guard" class="def record field anchored"><a href="#type-case.c_guard" class="anchor"></a><code><span>c_guard : <span><a href="#type-expression">expression</a> option</span>;</span></code></li><li id="type-case.c_rhs" class="def record field anchored"><a href="#type-case.c_rhs" class="anchor"></a><code><span>c_rhs : <a href="#type-expression">expression</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-record_label_definition"><a href="#type-record_label_definition" class="anchor"></a><code><span><span class="keyword">and</span> record_label_definition</span><span> = </span></code><ol><li id="type-record_label_definition.Kept" class="def variant constructor anchored"><a href="#type-record_label_definition.Kept" class="anchor"></a><code><span>| </span><span><span class="constructor">Kept</span> <span class="keyword">of</span> <a href="../Types/index.html#type-type_expr">Types.type_expr</a> * <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a></span></code></li><li id="type-record_label_definition.Overridden" class="def variant constructor anchored"><a href="#type-record_label_definition.Overridden" class="anchor"></a><code><span>| </span><span><span class="constructor">Overridden</span> <span class="keyword">of</span> <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-expression">expression</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-binding_op"><a href="#type-binding_op" class="anchor"></a><code><span><span class="keyword">and</span> binding_op</span><span> = </span><span>{</span></code><ol><li id="type-binding_op.bop_op_path" class="def record field anchored"><a href="#type-binding_op.bop_op_path" class="anchor"></a><code><span>bop_op_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-binding_op.bop_op_name" class="def record field anchored"><a href="#type-binding_op.bop_op_name" class="anchor"></a><code><span>bop_op_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-binding_op.bop_op_val" class="def record field anchored"><a href="#type-binding_op.bop_op_val" class="anchor"></a><code><span>bop_op_val : <a href="../Types/index.html#type-value_description">Types.value_description</a>;</span></code></li><li id="type-binding_op.bop_op_type" class="def record field anchored"><a href="#type-binding_op.bop_op_type" class="anchor"></a><code><span>bop_op_type : <a href="../Types/index.html#type-type_expr">Types.type_expr</a>;</span></code></li><li id="type-binding_op.bop_exp" class="def record field anchored"><a href="#type-binding_op.bop_exp" class="anchor"></a><code><span>bop_exp : <a href="#type-expression">expression</a>;</span></code></li><li id="type-binding_op.bop_loc" class="def record field anchored"><a href="#type-binding_op.bop_loc" class="anchor"></a><code><span>bop_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_expr"><a href="#type-class_expr" class="anchor"></a><code><span><span class="keyword">and</span> class_expr</span><span> = </span><span>{</span></code><ol><li id="type-class_expr.cl_desc" class="def record field anchored"><a href="#type-class_expr.cl_desc" class="anchor"></a><code><span>cl_desc : <a href="#type-class_expr_desc">class_expr_desc</a>;</span></code></li><li id="type-class_expr.cl_loc" class="def record field anchored"><a href="#type-class_expr.cl_loc" class="anchor"></a><code><span>cl_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_expr.cl_type" class="def record field anchored"><a href="#type-class_expr.cl_type" class="anchor"></a><code><span>cl_type : <a href="../Types/index.html#type-class_type">Types.class_type</a>;</span></code></li><li id="type-class_expr.cl_env" class="def record field anchored"><a href="#type-class_expr.cl_env" class="anchor"></a><code><span>cl_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-class_expr.cl_attributes" class="def record field anchored"><a href="#type-class_expr.cl_attributes" class="anchor"></a><code><span>cl_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_expr_desc"><a href="#type-class_expr_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_expr_desc</span><span> = </span></code><ol><li id="type-class_expr_desc.Tcl_ident" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_ident</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-class_expr_desc.Tcl_structure" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_structure" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_structure</span> <span class="keyword">of</span> <a href="#type-class_structure">class_structure</a></span></code></li><li id="type-class_expr_desc.Tcl_fun" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_fun" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_fun</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a>
* <a href="#type-pattern">pattern</a>
* <span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-expression">expression</a>)</span> list</span>
* <a href="#type-class_expr">class_expr</a>
* <a href="#type-partial">partial</a></span></code></li><li id="type-class_expr_desc.Tcl_apply" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_apply</span> <span class="keyword">of</span> <a href="#type-class_expr">class_expr</a> * <span><span>(<a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <span><a href="#type-expression">expression</a> option</span>)</span> list</span></span></code></li><li id="type-class_expr_desc.Tcl_let" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_let" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_let</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a>
* <span><a href="#type-value_binding">value_binding</a> list</span>
* <span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-expression">expression</a>)</span> list</span>
* <a href="#type-class_expr">class_expr</a></span></code></li><li id="type-class_expr_desc.Tcl_constraint" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_constraint</span> <span class="keyword">of</span> <a href="#type-class_expr">class_expr</a>
* <span><a href="#type-class_type">class_type</a> option</span>
* <span>string list</span>
* <span>string list</span>
* <a href="../Types/MethSet/index.html#type-t">Types.MethSet.t</a></span></code></li><li id="type-class_expr_desc.Tcl_open" class="def variant constructor anchored"><a href="#type-class_expr_desc.Tcl_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcl_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a> * <a href="#type-class_expr">class_expr</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_structure"><a href="#type-class_structure" class="anchor"></a><code><span><span class="keyword">and</span> class_structure</span><span> = </span><span>{</span></code><ol><li id="type-class_structure.cstr_self" class="def record field anchored"><a href="#type-class_structure.cstr_self" class="anchor"></a><code><span>cstr_self : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-class_structure.cstr_fields" class="def record field anchored"><a href="#type-class_structure.cstr_fields" class="anchor"></a><code><span>cstr_fields : <span><a href="#type-class_field">class_field</a> list</span>;</span></code></li><li id="type-class_structure.cstr_type" class="def record field anchored"><a href="#type-class_structure.cstr_type" class="anchor"></a><code><span>cstr_type : <a href="../Types/index.html#type-class_signature">Types.class_signature</a>;</span></code></li><li id="type-class_structure.cstr_meths" class="def record field anchored"><a href="#type-class_structure.cstr_meths" class="anchor"></a><code><span>cstr_meths : <span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="../Types/Meths/index.html#type-t">Types.Meths.t</a></span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field"><a href="#type-class_field" class="anchor"></a><code><span><span class="keyword">and</span> class_field</span><span> = </span><span>{</span></code><ol><li id="type-class_field.cf_desc" class="def record field anchored"><a href="#type-class_field.cf_desc" class="anchor"></a><code><span>cf_desc : <a href="#type-class_field_desc">class_field_desc</a>;</span></code></li><li id="type-class_field.cf_loc" class="def record field anchored"><a href="#type-class_field.cf_loc" class="anchor"></a><code><span>cf_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_field.cf_attributes" class="def record field anchored"><a href="#type-class_field.cf_attributes" class="anchor"></a><code><span>cf_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field_kind"><a href="#type-class_field_kind" class="anchor"></a><code><span><span class="keyword">and</span> class_field_kind</span><span> = </span></code><ol><li id="type-class_field_kind.Tcfk_virtual" class="def variant constructor anchored"><a href="#type-class_field_kind.Tcfk_virtual" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcfk_virtual</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_field_kind.Tcfk_concrete" class="def variant constructor anchored"><a href="#type-class_field_kind.Tcfk_concrete" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcfk_concrete</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-override_flag">Asttypes.override_flag</a> * <a href="#type-expression">expression</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field_desc"><a href="#type-class_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_field_desc</span><span> = </span></code><ol><li id="type-class_field_desc.Tcf_inherit" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_inherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_inherit</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-override_flag">Asttypes.override_flag</a>
* <a href="#type-class_expr">class_expr</a>
* <span>string option</span>
* <span><span>(string * <a href="../Ident/index.html#type-t">Ident.t</a>)</span> list</span>
* <span><span>(string * <a href="../Ident/index.html#type-t">Ident.t</a>)</span> list</span></span></code></li><li id="type-class_field_desc.Tcf_val" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_val</span> <span class="keyword">of</span> <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>
* <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a>
* <a href="../Ident/index.html#type-t">Ident.t</a>
* <a href="#type-class_field_kind">class_field_kind</a>
* bool</span></code></li><li id="type-class_field_desc.Tcf_method" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_method" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_method</span> <span class="keyword">of</span> <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a> * <a href="#type-class_field_kind">class_field_kind</a></span></code></li><li id="type-class_field_desc.Tcf_constraint" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_field_desc.Tcf_initializer" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_initializer" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_initializer</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code></li><li id="type-class_field_desc.Tcf_attribute" class="def variant constructor anchored"><a href="#type-class_field_desc.Tcf_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcf_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_expr"><a href="#type-module_expr" class="anchor"></a><code><span><span class="keyword">and</span> module_expr</span><span> = </span><span>{</span></code><ol><li id="type-module_expr.mod_desc" class="def record field anchored"><a href="#type-module_expr.mod_desc" class="anchor"></a><code><span>mod_desc : <a href="#type-module_expr_desc">module_expr_desc</a>;</span></code></li><li id="type-module_expr.mod_loc" class="def record field anchored"><a href="#type-module_expr.mod_loc" class="anchor"></a><code><span>mod_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-module_expr.mod_type" class="def record field anchored"><a href="#type-module_expr.mod_type" class="anchor"></a><code><span>mod_type : <a href="../Types/index.html#type-module_type">Types.module_type</a>;</span></code></li><li id="type-module_expr.mod_env" class="def record field anchored"><a href="#type-module_expr.mod_env" class="anchor"></a><code><span>mod_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-module_expr.mod_attributes" class="def record field anchored"><a href="#type-module_expr.mod_attributes" class="anchor"></a><code><span>mod_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type_constraint"><a href="#type-module_type_constraint" class="anchor"></a><code><span><span class="keyword">and</span> module_type_constraint</span><span> = </span></code><ol><li id="type-module_type_constraint.Tmodtype_implicit" class="def variant constructor anchored"><a href="#type-module_type_constraint.Tmodtype_implicit" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmodtype_implicit</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The module type constraint has been synthesized during typechecking.</p><span class="comment-delim">*)</span></div></li><li id="type-module_type_constraint.Tmodtype_explicit" class="def variant constructor anchored"><a href="#type-module_type_constraint.Tmodtype_explicit" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmodtype_explicit</span> <span class="keyword">of</span> <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The module type was in the source file.</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>Annotations for <code>Tmod_constraint</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-functor_parameter"><a href="#type-functor_parameter" class="anchor"></a><code><span><span class="keyword">and</span> functor_parameter</span><span> = </span></code><ol><li id="type-functor_parameter.Unit" class="def variant constructor anchored"><a href="#type-functor_parameter.Unit" class="anchor"></a><code><span>| </span><span><span class="constructor">Unit</span></span></code></li><li id="type-functor_parameter.Named" class="def variant constructor anchored"><a href="#type-functor_parameter.Named" class="anchor"></a><code><span>| </span><span><span class="constructor">Named</span> <span class="keyword">of</span> <span><a href="../Ident/index.html#type-t">Ident.t</a> option</span> * <span><span>string option</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-module_type">module_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_expr_desc"><a href="#type-module_expr_desc" class="anchor"></a><code><span><span class="keyword">and</span> module_expr_desc</span><span> = </span></code><ol><li id="type-module_expr_desc.Tmod_ident" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_ident</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li><li id="type-module_expr_desc.Tmod_structure" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_structure" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_structure</span> <span class="keyword">of</span> <a href="#type-structure">structure</a></span></code></li><li id="type-module_expr_desc.Tmod_functor" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_functor</span> <span class="keyword">of</span> <a href="#type-functor_parameter">functor_parameter</a> * <a href="#type-module_expr">module_expr</a></span></code></li><li id="type-module_expr_desc.Tmod_apply" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_apply</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a> * <a href="#type-module_expr">module_expr</a> * <a href="#type-module_coercion">module_coercion</a></span></code></li><li id="type-module_expr_desc.Tmod_constraint" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_constraint</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a>
* <a href="../Types/index.html#type-module_type">Types.module_type</a>
* <a href="#type-module_type_constraint">module_type_constraint</a>
* <a href="#type-module_coercion">module_coercion</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>ME (constraint = Tmodtype_implicit) (ME : MT) (constraint = Tmodtype_explicit MT)</p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Tmod_unpack" class="def variant constructor anchored"><a href="#type-module_expr_desc.Tmod_unpack" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmod_unpack</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="../Types/index.html#type-module_type">Types.module_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure"><a href="#type-structure" class="anchor"></a><code><span><span class="keyword">and</span> structure</span><span> = </span><span>{</span></code><ol><li id="type-structure.str_items" class="def record field anchored"><a href="#type-structure.str_items" class="anchor"></a><code><span>str_items : <span><a href="#type-structure_item">structure_item</a> list</span>;</span></code></li><li id="type-structure.str_type" class="def record field anchored"><a href="#type-structure.str_type" class="anchor"></a><code><span>str_type : <a href="../Types/index.html#type-signature">Types.signature</a>;</span></code></li><li id="type-structure.str_final_env" class="def record field anchored"><a href="#type-structure.str_final_env" class="anchor"></a><code><span>str_final_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure_item"><a href="#type-structure_item" class="anchor"></a><code><span><span class="keyword">and</span> structure_item</span><span> = </span><span>{</span></code><ol><li id="type-structure_item.str_desc" class="def record field anchored"><a href="#type-structure_item.str_desc" class="anchor"></a><code><span>str_desc : <a href="#type-structure_item_desc">structure_item_desc</a>;</span></code></li><li id="type-structure_item.str_loc" class="def record field anchored"><a href="#type-structure_item.str_loc" class="anchor"></a><code><span>str_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-structure_item.str_env" class="def record field anchored"><a href="#type-structure_item.str_env" class="anchor"></a><code><span>str_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure_item_desc"><a href="#type-structure_item_desc" class="anchor"></a><code><span><span class="keyword">and</span> structure_item_desc</span><span> = </span></code><ol><li id="type-structure_item_desc.Tstr_eval" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_eval" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_eval</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-attributes">attributes</a></span></code></li><li id="type-structure_item_desc.Tstr_value" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_value</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a> * <span><a href="#type-value_binding">value_binding</a> list</span></span></code></li><li id="type-structure_item_desc.Tstr_primitive" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_primitive" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_primitive</span> <span class="keyword">of</span> <a href="#type-value_description">value_description</a></span></code></li><li id="type-structure_item_desc.Tstr_type" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_type</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a> * <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code></li><li id="type-structure_item_desc.Tstr_typext" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_typext" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_typext</span> <span class="keyword">of</span> <a href="#type-type_extension">type_extension</a></span></code></li><li id="type-structure_item_desc.Tstr_exception" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_exception</span> <span class="keyword">of</span> <a href="#type-type_exception">type_exception</a></span></code></li><li id="type-structure_item_desc.Tstr_module" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_module</span> <span class="keyword">of</span> <a href="#type-module_binding">module_binding</a></span></code></li><li id="type-structure_item_desc.Tstr_recmodule" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_recmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_recmodule</span> <span class="keyword">of</span> <span><a href="#type-module_binding">module_binding</a> list</span></span></code></li><li id="type-structure_item_desc.Tstr_modtype" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_modtype</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code></li><li id="type-structure_item_desc.Tstr_open" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_open</span> <span class="keyword">of</span> <a href="#type-open_declaration">open_declaration</a></span></code></li><li id="type-structure_item_desc.Tstr_class" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_class</span> <span class="keyword">of</span> <span><span>(<a href="#type-class_declaration">class_declaration</a> * <span>string list</span>)</span> list</span></span></code></li><li id="type-structure_item_desc.Tstr_class_type" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_class_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_class_type</span> <span class="keyword">of</span> <span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-class_type_declaration">class_type_declaration</a>)</span>
list</span></span></code></li><li id="type-structure_item_desc.Tstr_include" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_include" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_include</span> <span class="keyword">of</span> <a href="#type-include_declaration">include_declaration</a></span></code></li><li id="type-structure_item_desc.Tstr_attribute" class="def variant constructor anchored"><a href="#type-structure_item_desc.Tstr_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Tstr_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_binding"><a href="#type-module_binding" class="anchor"></a><code><span><span class="keyword">and</span> module_binding</span><span> = </span><span>{</span></code><ol><li id="type-module_binding.mb_id" class="def record field anchored"><a href="#type-module_binding.mb_id" class="anchor"></a><code><span>mb_id : <span><a href="../Ident/index.html#type-t">Ident.t</a> option</span>;</span></code></li><li id="type-module_binding.mb_name" class="def record field anchored"><a href="#type-module_binding.mb_name" class="anchor"></a><code><span>mb_name : <span><span>string option</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-module_binding.mb_presence" class="def record field anchored"><a href="#type-module_binding.mb_presence" class="anchor"></a><code><span>mb_presence : <a href="../Types/index.html#type-module_presence">Types.module_presence</a>;</span></code></li><li id="type-module_binding.mb_expr" class="def record field anchored"><a href="#type-module_binding.mb_expr" class="anchor"></a><code><span>mb_expr : <a href="#type-module_expr">module_expr</a>;</span></code></li><li id="type-module_binding.mb_attributes" class="def record field anchored"><a href="#type-module_binding.mb_attributes" class="anchor"></a><code><span>mb_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-module_binding.mb_loc" class="def record field anchored"><a href="#type-module_binding.mb_loc" class="anchor"></a><code><span>mb_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-value_binding"><a href="#type-value_binding" class="anchor"></a><code><span><span class="keyword">and</span> value_binding</span><span> = </span><span>{</span></code><ol><li id="type-value_binding.vb_pat" class="def record field anchored"><a href="#type-value_binding.vb_pat" class="anchor"></a><code><span>vb_pat : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-value_binding.vb_expr" class="def record field anchored"><a href="#type-value_binding.vb_expr" class="anchor"></a><code><span>vb_expr : <a href="#type-expression">expression</a>;</span></code></li><li id="type-value_binding.vb_attributes" class="def record field anchored"><a href="#type-value_binding.vb_attributes" class="anchor"></a><code><span>vb_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-value_binding.vb_loc" class="def record field anchored"><a href="#type-value_binding.vb_loc" class="anchor"></a><code><span>vb_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_coercion"><a href="#type-module_coercion" class="anchor"></a><code><span><span class="keyword">and</span> module_coercion</span><span> = </span></code><ol><li id="type-module_coercion.Tcoerce_none" class="def variant constructor anchored"><a href="#type-module_coercion.Tcoerce_none" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcoerce_none</span></span></code></li><li id="type-module_coercion.Tcoerce_structure" class="def variant constructor anchored"><a href="#type-module_coercion.Tcoerce_structure" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcoerce_structure</span> <span class="keyword">of</span> <span><span>(int * <a href="#type-module_coercion">module_coercion</a>)</span> list</span>
* <span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * int * <a href="#type-module_coercion">module_coercion</a>)</span> list</span></span></code></li><li id="type-module_coercion.Tcoerce_functor" class="def variant constructor anchored"><a href="#type-module_coercion.Tcoerce_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcoerce_functor</span> <span class="keyword">of</span> <a href="#type-module_coercion">module_coercion</a> * <a href="#type-module_coercion">module_coercion</a></span></code></li><li id="type-module_coercion.Tcoerce_primitive" class="def variant constructor anchored"><a href="#type-module_coercion.Tcoerce_primitive" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcoerce_primitive</span> <span class="keyword">of</span> <a href="#type-primitive_coercion">primitive_coercion</a></span></code></li><li id="type-module_coercion.Tcoerce_alias" class="def variant constructor anchored"><a href="#type-module_coercion.Tcoerce_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcoerce_alias</span> <span class="keyword">of</span> <a href="../Env/index.html#type-t">Env.t</a> * <a href="../Path/index.html#type-t">Path.t</a> * <a href="#type-module_coercion">module_coercion</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type"><a href="#type-module_type" class="anchor"></a><code><span><span class="keyword">and</span> module_type</span><span> = </span><span>{</span></code><ol><li id="type-module_type.mty_desc" class="def record field anchored"><a href="#type-module_type.mty_desc" class="anchor"></a><code><span>mty_desc : <a href="#type-module_type_desc">module_type_desc</a>;</span></code></li><li id="type-module_type.mty_type" class="def record field anchored"><a href="#type-module_type.mty_type" class="anchor"></a><code><span>mty_type : <a href="../Types/index.html#type-module_type">Types.module_type</a>;</span></code></li><li id="type-module_type.mty_env" class="def record field anchored"><a href="#type-module_type.mty_env" class="anchor"></a><code><span>mty_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-module_type.mty_loc" class="def record field anchored"><a href="#type-module_type.mty_loc" class="anchor"></a><code><span>mty_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-module_type.mty_attributes" class="def record field anchored"><a href="#type-module_type.mty_attributes" class="anchor"></a><code><span>mty_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type_desc"><a href="#type-module_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> module_type_desc</span><span> = </span></code><ol><li id="type-module_type_desc.Tmty_ident" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_ident</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li><li id="type-module_type_desc.Tmty_signature" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_signature</span> <span class="keyword">of</span> <a href="#type-signature">signature</a></span></code></li><li id="type-module_type_desc.Tmty_functor" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_functor</span> <span class="keyword">of</span> <a href="#type-functor_parameter">functor_parameter</a> * <a href="#type-module_type">module_type</a></span></code></li><li id="type-module_type_desc.Tmty_with" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_with" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_with</span> <span class="keyword">of</span> <a href="#type-module_type">module_type</a>
* <span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-with_constraint">with_constraint</a>)</span> list</span></span></code></li><li id="type-module_type_desc.Tmty_typeof" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_typeof" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_typeof</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a></span></code></li><li id="type-module_type_desc.Tmty_alias" class="def variant constructor anchored"><a href="#type-module_type_desc.Tmty_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Tmty_alias</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-primitive_coercion"><a href="#type-primitive_coercion" class="anchor"></a><code><span><span class="keyword">and</span> primitive_coercion</span><span> = </span><span>{</span></code><ol><li id="type-primitive_coercion.pc_desc" class="def record field anchored"><a href="#type-primitive_coercion.pc_desc" class="anchor"></a><code><span>pc_desc : <a href="../Primitive/index.html#type-description">Primitive.description</a>;</span></code></li><li id="type-primitive_coercion.pc_type" class="def record field anchored"><a href="#type-primitive_coercion.pc_type" class="anchor"></a><code><span>pc_type : <a href="../Types/index.html#type-type_expr">Types.type_expr</a>;</span></code></li><li id="type-primitive_coercion.pc_env" class="def record field anchored"><a href="#type-primitive_coercion.pc_env" class="anchor"></a><code><span>pc_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-primitive_coercion.pc_loc" class="def record field anchored"><a href="#type-primitive_coercion.pc_loc" class="anchor"></a><code><span>pc_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature"><a href="#type-signature" class="anchor"></a><code><span><span class="keyword">and</span> signature</span><span> = </span><span>{</span></code><ol><li id="type-signature.sig_items" class="def record field anchored"><a href="#type-signature.sig_items" class="anchor"></a><code><span>sig_items : <span><a href="#type-signature_item">signature_item</a> list</span>;</span></code></li><li id="type-signature.sig_type" class="def record field anchored"><a href="#type-signature.sig_type" class="anchor"></a><code><span>sig_type : <a href="../Types/index.html#type-signature">Types.signature</a>;</span></code></li><li id="type-signature.sig_final_env" class="def record field anchored"><a href="#type-signature.sig_final_env" class="anchor"></a><code><span>sig_final_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature_item"><a href="#type-signature_item" class="anchor"></a><code><span><span class="keyword">and</span> signature_item</span><span> = </span><span>{</span></code><ol><li id="type-signature_item.sig_desc" class="def record field anchored"><a href="#type-signature_item.sig_desc" class="anchor"></a><code><span>sig_desc : <a href="#type-signature_item_desc">signature_item_desc</a>;</span></code></li><li id="type-signature_item.sig_env" class="def record field anchored"><a href="#type-signature_item.sig_env" class="anchor"></a><code><span>sig_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-signature_item.sig_loc" class="def record field anchored"><a href="#type-signature_item.sig_loc" class="anchor"></a><code><span>sig_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature_item_desc"><a href="#type-signature_item_desc" class="anchor"></a><code><span><span class="keyword">and</span> signature_item_desc</span><span> = </span></code><ol><li id="type-signature_item_desc.Tsig_value" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_value</span> <span class="keyword">of</span> <a href="#type-value_description">value_description</a></span></code></li><li id="type-signature_item_desc.Tsig_type" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_type</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a> * <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code></li><li id="type-signature_item_desc.Tsig_typesubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_typesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_typesubst</span> <span class="keyword">of</span> <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code></li><li id="type-signature_item_desc.Tsig_typext" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_typext" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_typext</span> <span class="keyword">of</span> <a href="#type-type_extension">type_extension</a></span></code></li><li id="type-signature_item_desc.Tsig_exception" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_exception</span> <span class="keyword">of</span> <a href="#type-type_exception">type_exception</a></span></code></li><li id="type-signature_item_desc.Tsig_module" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_module</span> <span class="keyword">of</span> <a href="#type-module_declaration">module_declaration</a></span></code></li><li id="type-signature_item_desc.Tsig_modsubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_modsubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_modsubst</span> <span class="keyword">of</span> <a href="#type-module_substitution">module_substitution</a></span></code></li><li id="type-signature_item_desc.Tsig_recmodule" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_recmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_recmodule</span> <span class="keyword">of</span> <span><a href="#type-module_declaration">module_declaration</a> list</span></span></code></li><li id="type-signature_item_desc.Tsig_modtype" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_modtype</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code></li><li id="type-signature_item_desc.Tsig_modtypesubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_modtypesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_modtypesubst</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code></li><li id="type-signature_item_desc.Tsig_open" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a></span></code></li><li id="type-signature_item_desc.Tsig_include" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_include" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_include</span> <span class="keyword">of</span> <a href="#type-include_description">include_description</a></span></code></li><li id="type-signature_item_desc.Tsig_class" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_class</span> <span class="keyword">of</span> <span><a href="#type-class_description">class_description</a> list</span></span></code></li><li id="type-signature_item_desc.Tsig_class_type" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_class_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_class_type</span> <span class="keyword">of</span> <span><a href="#type-class_type_declaration">class_type_declaration</a> list</span></span></code></li><li id="type-signature_item_desc.Tsig_attribute" class="def variant constructor anchored"><a href="#type-signature_item_desc.Tsig_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsig_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_declaration"><a href="#type-module_declaration" class="anchor"></a><code><span><span class="keyword">and</span> module_declaration</span><span> = </span><span>{</span></code><ol><li id="type-module_declaration.md_id" class="def record field anchored"><a href="#type-module_declaration.md_id" class="anchor"></a><code><span>md_id : <span><a href="../Ident/index.html#type-t">Ident.t</a> option</span>;</span></code></li><li id="type-module_declaration.md_name" class="def record field anchored"><a href="#type-module_declaration.md_name" class="anchor"></a><code><span>md_name : <span><span>string option</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-module_declaration.md_presence" class="def record field anchored"><a href="#type-module_declaration.md_presence" class="anchor"></a><code><span>md_presence : <a href="../Types/index.html#type-module_presence">Types.module_presence</a>;</span></code></li><li id="type-module_declaration.md_type" class="def record field anchored"><a href="#type-module_declaration.md_type" class="anchor"></a><code><span>md_type : <a href="#type-module_type">module_type</a>;</span></code></li><li id="type-module_declaration.md_attributes" class="def record field anchored"><a href="#type-module_declaration.md_attributes" class="anchor"></a><code><span>md_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-module_declaration.md_loc" class="def record field anchored"><a href="#type-module_declaration.md_loc" class="anchor"></a><code><span>md_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_substitution"><a href="#type-module_substitution" class="anchor"></a><code><span><span class="keyword">and</span> module_substitution</span><span> = </span><span>{</span></code><ol><li id="type-module_substitution.ms_id" class="def record field anchored"><a href="#type-module_substitution.ms_id" class="anchor"></a><code><span>ms_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-module_substitution.ms_name" class="def record field anchored"><a href="#type-module_substitution.ms_name" class="anchor"></a><code><span>ms_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-module_substitution.ms_manifest" class="def record field anchored"><a href="#type-module_substitution.ms_manifest" class="anchor"></a><code><span>ms_manifest : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-module_substitution.ms_txt" class="def record field anchored"><a href="#type-module_substitution.ms_txt" class="anchor"></a><code><span>ms_txt : <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-module_substitution.ms_attributes" class="def record field anchored"><a href="#type-module_substitution.ms_attributes" class="anchor"></a><code><span>ms_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-module_substitution.ms_loc" class="def record field anchored"><a href="#type-module_substitution.ms_loc" class="anchor"></a><code><span>ms_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type_declaration"><a href="#type-module_type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> module_type_declaration</span><span> = </span><span>{</span></code><ol><li id="type-module_type_declaration.mtd_id" class="def record field anchored"><a href="#type-module_type_declaration.mtd_id" class="anchor"></a><code><span>mtd_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-module_type_declaration.mtd_name" class="def record field anchored"><a href="#type-module_type_declaration.mtd_name" class="anchor"></a><code><span>mtd_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-module_type_declaration.mtd_type" class="def record field anchored"><a href="#type-module_type_declaration.mtd_type" class="anchor"></a><code><span>mtd_type : <span><a href="#type-module_type">module_type</a> option</span>;</span></code></li><li id="type-module_type_declaration.mtd_attributes" class="def record field anchored"><a href="#type-module_type_declaration.mtd_attributes" class="anchor"></a><code><span>mtd_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-module_type_declaration.mtd_loc" class="def record field anchored"><a href="#type-module_type_declaration.mtd_loc" class="anchor"></a><code><span>mtd_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_infos"><a href="#type-open_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a open_infos</span></span><span> = </span><span>{</span></code><ol><li id="type-open_infos.open_expr" class="def record field anchored"><a href="#type-open_infos.open_expr" class="anchor"></a><code><span>open_expr : <span class="type-var">'a</span>;</span></code></li><li id="type-open_infos.open_bound_items" class="def record field anchored"><a href="#type-open_infos.open_bound_items" class="anchor"></a><code><span>open_bound_items : <a href="../Types/index.html#type-signature">Types.signature</a>;</span></code></li><li id="type-open_infos.open_override" class="def record field anchored"><a href="#type-open_infos.open_override" class="anchor"></a><code><span>open_override : <a href="../Asttypes/index.html#type-override_flag">Asttypes.override_flag</a>;</span></code></li><li id="type-open_infos.open_env" class="def record field anchored"><a href="#type-open_infos.open_env" class="anchor"></a><code><span>open_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-open_infos.open_loc" class="def record field anchored"><a href="#type-open_infos.open_loc" class="anchor"></a><code><span>open_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-open_infos.open_attributes" class="def record field anchored"><a href="#type-open_infos.open_attributes" class="anchor"></a><code><span>open_attributes : <span><a href="#type-attribute">attribute</a> list</span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_description"><a href="#type-open_description" class="anchor"></a><code><span><span class="keyword">and</span> open_description</span><span> = <span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>)</span> <a href="#type-open_infos">open_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_declaration"><a href="#type-open_declaration" class="anchor"></a><code><span><span class="keyword">and</span> open_declaration</span><span> = <span><a href="#type-module_expr">module_expr</a> <a href="#type-open_infos">open_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_infos"><a href="#type-include_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a include_infos</span></span><span> = </span><span>{</span></code><ol><li id="type-include_infos.incl_mod" class="def record field anchored"><a href="#type-include_infos.incl_mod" class="anchor"></a><code><span>incl_mod : <span class="type-var">'a</span>;</span></code></li><li id="type-include_infos.incl_type" class="def record field anchored"><a href="#type-include_infos.incl_type" class="anchor"></a><code><span>incl_type : <a href="../Types/index.html#type-signature">Types.signature</a>;</span></code></li><li id="type-include_infos.incl_loc" class="def record field anchored"><a href="#type-include_infos.incl_loc" class="anchor"></a><code><span>incl_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-include_infos.incl_attributes" class="def record field anchored"><a href="#type-include_infos.incl_attributes" class="anchor"></a><code><span>incl_attributes : <span><a href="#type-attribute">attribute</a> list</span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_description"><a href="#type-include_description" class="anchor"></a><code><span><span class="keyword">and</span> include_description</span><span> = <span><a href="#type-module_type">module_type</a> <a href="#type-include_infos">include_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_declaration"><a href="#type-include_declaration" class="anchor"></a><code><span><span class="keyword">and</span> include_declaration</span><span> = <span><a href="#type-module_expr">module_expr</a> <a href="#type-include_infos">include_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-with_constraint"><a href="#type-with_constraint" class="anchor"></a><code><span><span class="keyword">and</span> with_constraint</span><span> = </span></code><ol><li id="type-with_constraint.Twith_type" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_type</span> <span class="keyword">of</span> <a href="#type-type_declaration">type_declaration</a></span></code></li><li id="type-with_constraint.Twith_module" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_module</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li><li id="type-with_constraint.Twith_modtype" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_modtype</span> <span class="keyword">of</span> <a href="#type-module_type">module_type</a></span></code></li><li id="type-with_constraint.Twith_typesubst" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_typesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_typesubst</span> <span class="keyword">of</span> <a href="#type-type_declaration">type_declaration</a></span></code></li><li id="type-with_constraint.Twith_modsubst" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_modsubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_modsubst</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li><li id="type-with_constraint.Twith_modtypesubst" class="def variant constructor anchored"><a href="#type-with_constraint.Twith_modtypesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Twith_modtypesubst</span> <span class="keyword">of</span> <a href="#type-module_type">module_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-core_type"><a href="#type-core_type" class="anchor"></a><code><span><span class="keyword">and</span> core_type</span><span> = </span><span>{</span></code><ol><li id="type-core_type.ctyp_desc" class="def record field anchored"><a href="#type-core_type.ctyp_desc" class="anchor"></a><code><span><span class="keyword">mutable</span> ctyp_desc : <a href="#type-core_type_desc">core_type_desc</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>mutable because of <code>Typeclass.declare_method</code></p><span class="comment-delim">*)</span></div></li><li id="type-core_type.ctyp_type" class="def record field anchored"><a href="#type-core_type.ctyp_type" class="anchor"></a><code><span><span class="keyword">mutable</span> ctyp_type : <a href="../Types/index.html#type-type_expr">Types.type_expr</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>mutable because of <code>Typeclass.declare_method</code></p><span class="comment-delim">*)</span></div></li><li id="type-core_type.ctyp_env" class="def record field anchored"><a href="#type-core_type.ctyp_env" class="anchor"></a><code><span>ctyp_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-core_type.ctyp_loc" class="def record field anchored"><a href="#type-core_type.ctyp_loc" class="anchor"></a><code><span>ctyp_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-core_type.ctyp_attributes" class="def record field anchored"><a href="#type-core_type.ctyp_attributes" class="anchor"></a><code><span>ctyp_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-core_type_desc"><a href="#type-core_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> core_type_desc</span><span> = </span></code><ol><li id="type-core_type_desc.Ttyp_any" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_any" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_any</span></span></code></li><li id="type-core_type_desc.Ttyp_var" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_var</span> <span class="keyword">of</span> string</span></code></li><li id="type-core_type_desc.Ttyp_arrow" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_arrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_arrow</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-core_type_desc.Ttyp_tuple" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_tuple</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-core_type_desc.Ttyp_constr" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_constr</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-core_type_desc.Ttyp_object" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_object" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_object</span> <span class="keyword">of</span> <span><a href="#type-object_field">object_field</a> list</span> * <a href="../Asttypes/index.html#type-closed_flag">Asttypes.closed_flag</a></span></code></li><li id="type-core_type_desc.Ttyp_class" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_class</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-core_type_desc.Ttyp_alias" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_alias</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * string</span></code></li><li id="type-core_type_desc.Ttyp_variant" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_variant</span> <span class="keyword">of</span> <span><a href="#type-row_field">row_field</a> list</span>
* <a href="../Asttypes/index.html#type-closed_flag">Asttypes.closed_flag</a>
* <span><span><a href="../Asttypes/index.html#type-label">Asttypes.label</a> list</span> option</span></span></code></li><li id="type-core_type_desc.Ttyp_poly" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_poly" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_poly</span> <span class="keyword">of</span> <span>string list</span> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-core_type_desc.Ttyp_package" class="def variant constructor anchored"><a href="#type-core_type_desc.Ttyp_package" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttyp_package</span> <span class="keyword">of</span> <a href="#type-package_type">package_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-package_type"><a href="#type-package_type" class="anchor"></a><code><span><span class="keyword">and</span> package_type</span><span> = </span><span>{</span></code><ol><li id="type-package_type.pack_path" class="def record field anchored"><a href="#type-package_type.pack_path" class="anchor"></a><code><span>pack_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-package_type.pack_fields" class="def record field anchored"><a href="#type-package_type.pack_fields" class="anchor"></a><code><span>pack_fields : <span><span>(<span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-core_type">core_type</a>)</span> list</span>;</span></code></li><li id="type-package_type.pack_type" class="def record field anchored"><a href="#type-package_type.pack_type" class="anchor"></a><code><span>pack_type : <a href="../Types/index.html#type-module_type">Types.module_type</a>;</span></code></li><li id="type-package_type.pack_txt" class="def record field anchored"><a href="#type-package_type.pack_txt" class="anchor"></a><code><span>pack_txt : <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_field"><a href="#type-row_field" class="anchor"></a><code><span><span class="keyword">and</span> row_field</span><span> = </span><span>{</span></code><ol><li id="type-row_field.rf_desc" class="def record field anchored"><a href="#type-row_field.rf_desc" class="anchor"></a><code><span>rf_desc : <a href="#type-row_field_desc">row_field_desc</a>;</span></code></li><li id="type-row_field.rf_loc" class="def record field anchored"><a href="#type-row_field.rf_loc" class="anchor"></a><code><span>rf_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-row_field.rf_attributes" class="def record field anchored"><a href="#type-row_field.rf_attributes" class="anchor"></a><code><span>rf_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_field_desc"><a href="#type-row_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> row_field_desc</span><span> = </span></code><ol><li id="type-row_field_desc.Ttag" class="def variant constructor anchored"><a href="#type-row_field_desc.Ttag" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttag</span> <span class="keyword">of</span> <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * bool * <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-row_field_desc.Tinherit" class="def variant constructor anchored"><a href="#type-row_field_desc.Tinherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Tinherit</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-object_field"><a href="#type-object_field" class="anchor"></a><code><span><span class="keyword">and</span> object_field</span><span> = </span><span>{</span></code><ol><li id="type-object_field.of_desc" class="def record field anchored"><a href="#type-object_field.of_desc" class="anchor"></a><code><span>of_desc : <a href="#type-object_field_desc">object_field_desc</a>;</span></code></li><li id="type-object_field.of_loc" class="def record field anchored"><a href="#type-object_field.of_loc" class="anchor"></a><code><span>of_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-object_field.of_attributes" class="def record field anchored"><a href="#type-object_field.of_attributes" class="anchor"></a><code><span>of_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-object_field_desc"><a href="#type-object_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> object_field_desc</span><span> = </span></code><ol><li id="type-object_field_desc.OTtag" class="def variant constructor anchored"><a href="#type-object_field_desc.OTtag" class="anchor"></a><code><span>| </span><span><span class="constructor">OTtag</span> <span class="keyword">of</span> <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-object_field_desc.OTinherit" class="def variant constructor anchored"><a href="#type-object_field_desc.OTinherit" class="anchor"></a><code><span>| </span><span><span class="constructor">OTinherit</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-value_description"><a href="#type-value_description" class="anchor"></a><code><span><span class="keyword">and</span> value_description</span><span> = </span><span>{</span></code><ol><li id="type-value_description.val_id" class="def record field anchored"><a href="#type-value_description.val_id" class="anchor"></a><code><span>val_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-value_description.val_name" class="def record field anchored"><a href="#type-value_description.val_name" class="anchor"></a><code><span>val_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-value_description.val_desc" class="def record field anchored"><a href="#type-value_description.val_desc" class="anchor"></a><code><span>val_desc : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-value_description.val_val" class="def record field anchored"><a href="#type-value_description.val_val" class="anchor"></a><code><span>val_val : <a href="../Types/index.html#type-value_description">Types.value_description</a>;</span></code></li><li id="type-value_description.val_prim" class="def record field anchored"><a href="#type-value_description.val_prim" class="anchor"></a><code><span>val_prim : <span>string list</span>;</span></code></li><li id="type-value_description.val_loc" class="def record field anchored"><a href="#type-value_description.val_loc" class="anchor"></a><code><span>val_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-value_description.val_attributes" class="def record field anchored"><a href="#type-value_description.val_attributes" class="anchor"></a><code><span>val_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_declaration"><a href="#type-type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> type_declaration</span><span> = </span><span>{</span></code><ol><li id="type-type_declaration.typ_id" class="def record field anchored"><a href="#type-type_declaration.typ_id" class="anchor"></a><code><span>typ_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-type_declaration.typ_name" class="def record field anchored"><a href="#type-type_declaration.typ_name" class="anchor"></a><code><span>typ_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-type_declaration.typ_params" class="def record field anchored"><a href="#type-type_declaration.typ_params" class="anchor"></a><code><span>typ_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="../Asttypes/index.html#type-variance">Asttypes.variance</a> * <a href="../Asttypes/index.html#type-injectivity">Asttypes.injectivity</a>)</span>)</span> list</span>;</span></code></li><li id="type-type_declaration.typ_type" class="def record field anchored"><a href="#type-type_declaration.typ_type" class="anchor"></a><code><span>typ_type : <a href="../Types/index.html#type-type_declaration">Types.type_declaration</a>;</span></code></li><li id="type-type_declaration.typ_cstrs" class="def record field anchored"><a href="#type-type_declaration.typ_cstrs" class="anchor"></a><code><span>typ_cstrs : <span><span>(<a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a> * <a href="../Location/index.html#type-t">Location.t</a>)</span> list</span>;</span></code></li><li id="type-type_declaration.typ_kind" class="def record field anchored"><a href="#type-type_declaration.typ_kind" class="anchor"></a><code><span>typ_kind : <a href="#type-type_kind">type_kind</a>;</span></code></li><li id="type-type_declaration.typ_private" class="def record field anchored"><a href="#type-type_declaration.typ_private" class="anchor"></a><code><span>typ_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>;</span></code></li><li id="type-type_declaration.typ_manifest" class="def record field anchored"><a href="#type-type_declaration.typ_manifest" class="anchor"></a><code><span>typ_manifest : <span><a href="#type-core_type">core_type</a> option</span>;</span></code></li><li id="type-type_declaration.typ_loc" class="def record field anchored"><a href="#type-type_declaration.typ_loc" class="anchor"></a><code><span>typ_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-type_declaration.typ_attributes" class="def record field anchored"><a href="#type-type_declaration.typ_attributes" class="anchor"></a><code><span>typ_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_kind"><a href="#type-type_kind" class="anchor"></a><code><span><span class="keyword">and</span> type_kind</span><span> = </span></code><ol><li id="type-type_kind.Ttype_abstract" class="def variant constructor anchored"><a href="#type-type_kind.Ttype_abstract" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttype_abstract</span></span></code></li><li id="type-type_kind.Ttype_variant" class="def variant constructor anchored"><a href="#type-type_kind.Ttype_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttype_variant</span> <span class="keyword">of</span> <span><a href="#type-constructor_declaration">constructor_declaration</a> list</span></span></code></li><li id="type-type_kind.Ttype_record" class="def variant constructor anchored"><a href="#type-type_kind.Ttype_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttype_record</span> <span class="keyword">of</span> <span><a href="#type-label_declaration">label_declaration</a> list</span></span></code></li><li id="type-type_kind.Ttype_open" class="def variant constructor anchored"><a href="#type-type_kind.Ttype_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttype_open</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label_declaration"><a href="#type-label_declaration" class="anchor"></a><code><span><span class="keyword">and</span> label_declaration</span><span> = </span><span>{</span></code><ol><li id="type-label_declaration.ld_id" class="def record field anchored"><a href="#type-label_declaration.ld_id" class="anchor"></a><code><span>ld_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-label_declaration.ld_name" class="def record field anchored"><a href="#type-label_declaration.ld_name" class="anchor"></a><code><span>ld_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-label_declaration.ld_mutable" class="def record field anchored"><a href="#type-label_declaration.ld_mutable" class="anchor"></a><code><span>ld_mutable : <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a>;</span></code></li><li id="type-label_declaration.ld_type" class="def record field anchored"><a href="#type-label_declaration.ld_type" class="anchor"></a><code><span>ld_type : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-label_declaration.ld_loc" class="def record field anchored"><a href="#type-label_declaration.ld_loc" class="anchor"></a><code><span>ld_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-label_declaration.ld_attributes" class="def record field anchored"><a href="#type-label_declaration.ld_attributes" class="anchor"></a><code><span>ld_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_declaration"><a href="#type-constructor_declaration" class="anchor"></a><code><span><span class="keyword">and</span> constructor_declaration</span><span> = </span><span>{</span></code><ol><li id="type-constructor_declaration.cd_id" class="def record field anchored"><a href="#type-constructor_declaration.cd_id" class="anchor"></a><code><span>cd_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-constructor_declaration.cd_name" class="def record field anchored"><a href="#type-constructor_declaration.cd_name" class="anchor"></a><code><span>cd_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-constructor_declaration.cd_vars" class="def record field anchored"><a href="#type-constructor_declaration.cd_vars" class="anchor"></a><code><span>cd_vars : <span><span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> list</span>;</span></code></li><li id="type-constructor_declaration.cd_args" class="def record field anchored"><a href="#type-constructor_declaration.cd_args" class="anchor"></a><code><span>cd_args : <a href="#type-constructor_arguments">constructor_arguments</a>;</span></code></li><li id="type-constructor_declaration.cd_res" class="def record field anchored"><a href="#type-constructor_declaration.cd_res" class="anchor"></a><code><span>cd_res : <span><a href="#type-core_type">core_type</a> option</span>;</span></code></li><li id="type-constructor_declaration.cd_loc" class="def record field anchored"><a href="#type-constructor_declaration.cd_loc" class="anchor"></a><code><span>cd_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-constructor_declaration.cd_attributes" class="def record field anchored"><a href="#type-constructor_declaration.cd_attributes" class="anchor"></a><code><span>cd_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_arguments"><a href="#type-constructor_arguments" class="anchor"></a><code><span><span class="keyword">and</span> constructor_arguments</span><span> = </span></code><ol><li id="type-constructor_arguments.Cstr_tuple" class="def variant constructor anchored"><a href="#type-constructor_arguments.Cstr_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_tuple</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-constructor_arguments.Cstr_record" class="def variant constructor anchored"><a href="#type-constructor_arguments.Cstr_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_record</span> <span class="keyword">of</span> <span><a href="#type-label_declaration">label_declaration</a> list</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_extension"><a href="#type-type_extension" class="anchor"></a><code><span><span class="keyword">and</span> type_extension</span><span> = </span><span>{</span></code><ol><li id="type-type_extension.tyext_path" class="def record field anchored"><a href="#type-type_extension.tyext_path" class="anchor"></a><code><span>tyext_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-type_extension.tyext_txt" class="def record field anchored"><a href="#type-type_extension.tyext_txt" class="anchor"></a><code><span>tyext_txt : <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-type_extension.tyext_params" class="def record field anchored"><a href="#type-type_extension.tyext_params" class="anchor"></a><code><span>tyext_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="../Asttypes/index.html#type-variance">Asttypes.variance</a> * <a href="../Asttypes/index.html#type-injectivity">Asttypes.injectivity</a>)</span>)</span> list</span>;</span></code></li><li id="type-type_extension.tyext_constructors" class="def record field anchored"><a href="#type-type_extension.tyext_constructors" class="anchor"></a><code><span>tyext_constructors : <span><a href="#type-extension_constructor">extension_constructor</a> list</span>;</span></code></li><li id="type-type_extension.tyext_private" class="def record field anchored"><a href="#type-type_extension.tyext_private" class="anchor"></a><code><span>tyext_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>;</span></code></li><li id="type-type_extension.tyext_loc" class="def record field anchored"><a href="#type-type_extension.tyext_loc" class="anchor"></a><code><span>tyext_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-type_extension.tyext_attributes" class="def record field anchored"><a href="#type-type_extension.tyext_attributes" class="anchor"></a><code><span>tyext_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_exception"><a href="#type-type_exception" class="anchor"></a><code><span><span class="keyword">and</span> type_exception</span><span> = </span><span>{</span></code><ol><li id="type-type_exception.tyexn_constructor" class="def record field anchored"><a href="#type-type_exception.tyexn_constructor" class="anchor"></a><code><span>tyexn_constructor : <a href="#type-extension_constructor">extension_constructor</a>;</span></code></li><li id="type-type_exception.tyexn_loc" class="def record field anchored"><a href="#type-type_exception.tyexn_loc" class="anchor"></a><code><span>tyexn_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-type_exception.tyexn_attributes" class="def record field anchored"><a href="#type-type_exception.tyexn_attributes" class="anchor"></a><code><span>tyexn_attributes : <span><a href="#type-attribute">attribute</a> list</span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extension_constructor"><a href="#type-extension_constructor" class="anchor"></a><code><span><span class="keyword">and</span> extension_constructor</span><span> = </span><span>{</span></code><ol><li id="type-extension_constructor.ext_id" class="def record field anchored"><a href="#type-extension_constructor.ext_id" class="anchor"></a><code><span>ext_id : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-extension_constructor.ext_name" class="def record field anchored"><a href="#type-extension_constructor.ext_name" class="anchor"></a><code><span>ext_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-extension_constructor.ext_type" class="def record field anchored"><a href="#type-extension_constructor.ext_type" class="anchor"></a><code><span>ext_type : <a href="../Types/index.html#type-extension_constructor">Types.extension_constructor</a>;</span></code></li><li id="type-extension_constructor.ext_kind" class="def record field anchored"><a href="#type-extension_constructor.ext_kind" class="anchor"></a><code><span>ext_kind : <a href="#type-extension_constructor_kind">extension_constructor_kind</a>;</span></code></li><li id="type-extension_constructor.ext_loc" class="def record field anchored"><a href="#type-extension_constructor.ext_loc" class="anchor"></a><code><span>ext_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-extension_constructor.ext_attributes" class="def record field anchored"><a href="#type-extension_constructor.ext_attributes" class="anchor"></a><code><span>ext_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extension_constructor_kind"><a href="#type-extension_constructor_kind" class="anchor"></a><code><span><span class="keyword">and</span> extension_constructor_kind</span><span> = </span></code><ol><li id="type-extension_constructor_kind.Text_decl" class="def variant constructor anchored"><a href="#type-extension_constructor_kind.Text_decl" class="anchor"></a><code><span>| </span><span><span class="constructor">Text_decl</span> <span class="keyword">of</span> <span><span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> list</span>
* <a href="#type-constructor_arguments">constructor_arguments</a>
* <span><a href="#type-core_type">core_type</a> option</span></span></code></li><li id="type-extension_constructor_kind.Text_rebind" class="def variant constructor anchored"><a href="#type-extension_constructor_kind.Text_rebind" class="anchor"></a><code><span>| </span><span><span class="constructor">Text_rebind</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type"><a href="#type-class_type" class="anchor"></a><code><span><span class="keyword">and</span> class_type</span><span> = </span><span>{</span></code><ol><li id="type-class_type.cltyp_desc" class="def record field anchored"><a href="#type-class_type.cltyp_desc" class="anchor"></a><code><span>cltyp_desc : <a href="#type-class_type_desc">class_type_desc</a>;</span></code></li><li id="type-class_type.cltyp_type" class="def record field anchored"><a href="#type-class_type.cltyp_type" class="anchor"></a><code><span>cltyp_type : <a href="../Types/index.html#type-class_type">Types.class_type</a>;</span></code></li><li id="type-class_type.cltyp_env" class="def record field anchored"><a href="#type-class_type.cltyp_env" class="anchor"></a><code><span>cltyp_env : <a href="../Env/index.html#type-t">Env.t</a>;</span></code></li><li id="type-class_type.cltyp_loc" class="def record field anchored"><a href="#type-class_type.cltyp_loc" class="anchor"></a><code><span>cltyp_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_type.cltyp_attributes" class="def record field anchored"><a href="#type-class_type.cltyp_attributes" class="anchor"></a><code><span>cltyp_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_desc"><a href="#type-class_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_type_desc</span><span> = </span></code><ol><li id="type-class_type_desc.Tcty_constr" class="def variant constructor anchored"><a href="#type-class_type_desc.Tcty_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcty_constr</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="../Longident/index.html#type-t">Longident.t</a> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-class_type_desc.Tcty_signature" class="def variant constructor anchored"><a href="#type-class_type_desc.Tcty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcty_signature</span> <span class="keyword">of</span> <a href="#type-class_signature">class_signature</a></span></code></li><li id="type-class_type_desc.Tcty_arrow" class="def variant constructor anchored"><a href="#type-class_type_desc.Tcty_arrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcty_arrow</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <a href="#type-core_type">core_type</a> * <a href="#type-class_type">class_type</a></span></code></li><li id="type-class_type_desc.Tcty_open" class="def variant constructor anchored"><a href="#type-class_type_desc.Tcty_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Tcty_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a> * <a href="#type-class_type">class_type</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_signature"><a href="#type-class_signature" class="anchor"></a><code><span><span class="keyword">and</span> class_signature</span><span> = </span><span>{</span></code><ol><li id="type-class_signature.csig_self" class="def record field anchored"><a href="#type-class_signature.csig_self" class="anchor"></a><code><span>csig_self : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-class_signature.csig_fields" class="def record field anchored"><a href="#type-class_signature.csig_fields" class="anchor"></a><code><span>csig_fields : <span><a href="#type-class_type_field">class_type_field</a> list</span>;</span></code></li><li id="type-class_signature.csig_type" class="def record field anchored"><a href="#type-class_signature.csig_type" class="anchor"></a><code><span>csig_type : <a href="../Types/index.html#type-class_signature">Types.class_signature</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_field"><a href="#type-class_type_field" class="anchor"></a><code><span><span class="keyword">and</span> class_type_field</span><span> = </span><span>{</span></code><ol><li id="type-class_type_field.ctf_desc" class="def record field anchored"><a href="#type-class_type_field.ctf_desc" class="anchor"></a><code><span>ctf_desc : <a href="#type-class_type_field_desc">class_type_field_desc</a>;</span></code></li><li id="type-class_type_field.ctf_loc" class="def record field anchored"><a href="#type-class_type_field.ctf_loc" class="anchor"></a><code><span>ctf_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_type_field.ctf_attributes" class="def record field anchored"><a href="#type-class_type_field.ctf_attributes" class="anchor"></a><code><span>ctf_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_field_desc"><a href="#type-class_type_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_type_field_desc</span><span> = </span></code><ol><li id="type-class_type_field_desc.Tctf_inherit" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Tctf_inherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Tctf_inherit</span> <span class="keyword">of</span> <a href="#type-class_type">class_type</a></span></code></li><li id="type-class_type_field_desc.Tctf_val" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Tctf_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Tctf_val</span> <span class="keyword">of</span> string * <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a> * <a href="../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_type_field_desc.Tctf_method" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Tctf_method" class="anchor"></a><code><span>| </span><span><span class="constructor">Tctf_method</span> <span class="keyword">of</span> string
* <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>
* <a href="../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a>
* <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_type_field_desc.Tctf_constraint" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Tctf_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Tctf_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_type_field_desc.Tctf_attribute" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Tctf_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Tctf_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_declaration"><a href="#type-class_declaration" class="anchor"></a><code><span><span class="keyword">and</span> class_declaration</span><span> = <span><a href="#type-class_expr">class_expr</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_description"><a href="#type-class_description" class="anchor"></a><code><span><span class="keyword">and</span> class_description</span><span> = <span><a href="#type-class_type">class_type</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_declaration"><a href="#type-class_type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> class_type_declaration</span><span> = <span><a href="#type-class_type">class_type</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_infos"><a href="#type-class_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a class_infos</span></span><span> = </span><span>{</span></code><ol><li id="type-class_infos.ci_virt" class="def record field anchored"><a href="#type-class_infos.ci_virt" class="anchor"></a><code><span>ci_virt : <a href="../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a>;</span></code></li><li id="type-class_infos.ci_params" class="def record field anchored"><a href="#type-class_infos.ci_params" class="anchor"></a><code><span>ci_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="../Asttypes/index.html#type-variance">Asttypes.variance</a> * <a href="../Asttypes/index.html#type-injectivity">Asttypes.injectivity</a>)</span>)</span> list</span>;</span></code></li><li id="type-class_infos.ci_id_name" class="def record field anchored"><a href="#type-class_infos.ci_id_name" class="anchor"></a><code><span>ci_id_name : <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span>;</span></code></li><li id="type-class_infos.ci_id_class" class="def record field anchored"><a href="#type-class_infos.ci_id_class" class="anchor"></a><code><span>ci_id_class : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-class_infos.ci_id_class_type" class="def record field anchored"><a href="#type-class_infos.ci_id_class_type" class="anchor"></a><code><span>ci_id_class_type : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-class_infos.ci_id_object" class="def record field anchored"><a href="#type-class_infos.ci_id_object" class="anchor"></a><code><span>ci_id_object : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-class_infos.ci_id_typehash" class="def record field anchored"><a href="#type-class_infos.ci_id_typehash" class="anchor"></a><code><span>ci_id_typehash : <a href="../Ident/index.html#type-t">Ident.t</a>;</span></code></li><li id="type-class_infos.ci_expr" class="def record field anchored"><a href="#type-class_infos.ci_expr" class="anchor"></a><code><span>ci_expr : <span class="type-var">'a</span>;</span></code></li><li id="type-class_infos.ci_decl" class="def record field anchored"><a href="#type-class_infos.ci_decl" class="anchor"></a><code><span>ci_decl : <a href="../Types/index.html#type-class_declaration">Types.class_declaration</a>;</span></code></li><li id="type-class_infos.ci_type_decl" class="def record field anchored"><a href="#type-class_infos.ci_type_decl" class="anchor"></a><code><span>ci_type_decl : <a href="../Types/index.html#type-class_type_declaration">Types.class_type_declaration</a>;</span></code></li><li id="type-class_infos.ci_loc" class="def record field anchored"><a href="#type-class_infos.ci_loc" class="anchor"></a><code><span>ci_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_infos.ci_attributes" class="def record field anchored"><a href="#type-class_infos.ci_attributes" class="anchor"></a><code><span>ci_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-implementation"><a href="#type-implementation" class="anchor"></a><code><span><span class="keyword">type</span> implementation</span><span> = </span><span>{</span></code><ol><li id="type-implementation.structure" class="def record field anchored"><a href="#type-implementation.structure" class="anchor"></a><code><span>structure : <a href="#type-structure">structure</a>;</span></code></li><li id="type-implementation.coercion" class="def record field anchored"><a href="#type-implementation.coercion" class="anchor"></a><code><span>coercion : <a href="#type-module_coercion">module_coercion</a>;</span></code></li><li id="type-implementation.signature" class="def record field anchored"><a href="#type-implementation.signature" class="anchor"></a><code><span>signature : <a href="../Types/index.html#type-signature">Types.signature</a>;</span></code></li><li id="type-implementation.shape" class="def record field anchored"><a href="#type-implementation.shape" class="anchor"></a><code><span>shape : <a href="../Shape/index.html#type-t">Shape.t</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>A typechecked implementation including its module structure, its exported signature, and a coercion of the module against that signature.</p><p>If an .mli file is present, the signature will come from that file and be the exported signature of the module.</p><p>If there isn't one, the signature will be inferred from the module structure.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-as_computation_pattern"><a href="#val-as_computation_pattern" class="anchor"></a><code><span><span class="keyword">val</span> as_computation_pattern : <span><a href="#type-pattern">pattern</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-computation">computation</a> <a href="#type-general_pattern">general_pattern</a></span></span></code></div><div class="spec-doc"><p><code>as_computation_pattern p</code> is a computation pattern with description <code>Tpat_value p</code>, which enforces a correct placement of pat_attributes and pat_extra metadata (on the inner value pattern, rather than on the computation pattern).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-classify_pattern_desc"><a href="#val-classify_pattern_desc" class="anchor"></a><code><span><span class="keyword">val</span> classify_pattern_desc : <span><span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'k</span> <a href="#type-pattern_category">pattern_category</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-classify_pattern"><a href="#val-classify_pattern" class="anchor"></a><code><span><span class="keyword">val</span> classify_pattern : <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'k</span> <a href="#type-pattern_category">pattern_category</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_action"><a href="#type-pattern_action" class="anchor"></a><code><span><span class="keyword">type</span> pattern_action</span><span> = </span><span>{</span></code><ol><li id="type-pattern_action.f" class="def record field anchored"><a href="#type-pattern_action.f" class="anchor"></a><code><span>f : 'k. <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> unit;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-shallow_iter_pattern_desc"><a href="#val-shallow_iter_pattern_desc" class="anchor"></a><code><span><span class="keyword">val</span> shallow_iter_pattern_desc : <span><a href="#type-pattern_action">pattern_action</a> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_transformation"><a href="#type-pattern_transformation" class="anchor"></a><code><span><span class="keyword">type</span> pattern_transformation</span><span> = </span><span>{</span></code><ol><li id="type-pattern_transformation.f" class="def record field anchored"><a href="#type-pattern_transformation.f" class="anchor"></a><code><span>f : 'k. <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-shallow_map_pattern_desc"><a href="#val-shallow_map_pattern_desc" class="anchor"></a><code><span><span class="keyword">val</span> shallow_map_pattern_desc :
<span><a href="#type-pattern_transformation">pattern_transformation</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'k</span> <a href="#type-pattern_desc">pattern_desc</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_general_pattern"><a href="#val-iter_general_pattern" class="anchor"></a><code><span><span class="keyword">val</span> iter_general_pattern : <span><a href="#type-pattern_action">pattern_action</a> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_pattern"><a href="#val-iter_pattern" class="anchor"></a><code><span><span class="keyword">val</span> iter_pattern : <span><span>(<span><a href="#type-pattern">pattern</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-pattern">pattern</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_predicate"><a href="#type-pattern_predicate" class="anchor"></a><code><span><span class="keyword">type</span> pattern_predicate</span><span> = </span><span>{</span></code><ol><li id="type-pattern_predicate.f" class="def record field anchored"><a href="#type-pattern_predicate.f" class="anchor"></a><code><span>f : 'k. <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> bool;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exists_general_pattern"><a href="#val-exists_general_pattern" class="anchor"></a><code><span><span class="keyword">val</span> exists_general_pattern : <span><a href="#type-pattern_predicate">pattern_predicate</a> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exists_pattern"><a href="#val-exists_pattern" class="anchor"></a><code><span><span class="keyword">val</span> exists_pattern : <span><span>(<span><a href="#type-pattern">pattern</a> <span class="arrow">&#45;&gt;</span></span> bool)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-pattern">pattern</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let_bound_idents"><a href="#val-let_bound_idents" class="anchor"></a><code><span><span class="keyword">val</span> let_bound_idents : <span><span><a href="#type-value_binding">value_binding</a> list</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Ident/index.html#type-t">Ident.t</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let_bound_idents_full"><a href="#val-let_bound_idents_full" class="anchor"></a><code><span><span class="keyword">val</span> let_bound_idents_full :
<span><span><a href="#type-value_binding">value_binding</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Types/index.html#type-type_expr">Types.type_expr</a>)</span> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-alpha_pat"><a href="#val-alpha_pat" class="anchor"></a><code><span><span class="keyword">val</span> alpha_pat :
<span><span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <a href="../Ident/index.html#type-t">Ident.t</a>)</span> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span></span></code></div><div class="spec-doc"><p>Alpha conversion of patterns</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mknoloc"><a href="#val-mknoloc" class="anchor"></a><code><span><span class="keyword">val</span> mknoloc : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mkloc"><a href="#val-mkloc" class="anchor"></a><code><span><span class="keyword">val</span> mkloc : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Location/index.html#type-t">Location.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pat_bound_idents"><a href="#val-pat_bound_idents" class="anchor"></a><code><span><span class="keyword">val</span> pat_bound_idents : <span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Ident/index.html#type-t">Ident.t</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pat_bound_idents_full"><a href="#val-pat_bound_idents_full" class="anchor"></a><code><span><span class="keyword">val</span> pat_bound_idents_full :
<span><span><span class="type-var">'k</span> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<a href="../Ident/index.html#type-t">Ident.t</a> * <span>string <a href="../Asttypes/index.html#type-loc">Asttypes.loc</a></span> * <a href="../Types/index.html#type-type_expr">Types.type_expr</a>)</span> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-split_pattern"><a href="#val-split_pattern" class="anchor"></a><code><span><span class="keyword">val</span> split_pattern :
<span><span><a href="#type-computation">computation</a> <a href="#type-general_pattern">general_pattern</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-pattern">pattern</a> option</span> * <span><a href="#type-pattern">pattern</a> option</span></span></code></div><div class="spec-doc"><p>Splits an or pattern into its value (left) and exception (right) parts.</p></div></div></div></body></html>