mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-18 16:46:41 -05:00
37 lines
96 KiB
HTML
37 lines
96 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Types (ocaml.Types)</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> » Types</nav><header class="odoc-preamble"><h1>Module <code><span>Types</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#representation-of-types-and-declarations">Representation of types and declarations</a></li></ul></nav><div class="odoc-content"><h1 id="representation-of-types-and-declarations"><a href="#representation-of-types-and-declarations" class="anchor"></a>Representation of types and declarations</h1><p><code>Types</code> defines the representation of types and declarations (that is, the content of module signatures).</p><p>CMI files are made of marshalled types.</p><p>Asttypes exposes basic definitions shared both by Parsetree and Types.</p><div class="odoc-spec"><div class="spec type anchored" id="type-type_expr"><a href="#type-type_expr" class="anchor"></a><code><span><span class="keyword">type</span> type_expr</span></code></div><div class="spec-doc"><p>Type expressions for the core language.</p><p>The <code>type_desc</code> variant defines all the possible type expressions one can find in OCaml. <code>type_expr</code> wraps this with some annotations.</p><p>The <code>level</code> field tracks the level of polymorphism associated to a type, guiding the generalization algorithm. Put shortly, when referring to a type in a given environment, both the type and the environment have a level. If the type has an higher level, then it can be considered fully polymorphic (type variables will be printed as <code>'a</code>), otherwise it'll be weakly polymorphic, or non generalized (type variables printed as <code>'_a</code>). See <code>http://okmij.org/ftp/ML/generalization.html</code> for more information.</p><p>Note about <code>type_declaration</code>: one should not make the confusion between <code>type_expr</code> and <code>type_declaration</code>.</p><p><code>type_declaration</code> refers specifically to the <code>type</code> construct in OCaml language, where you create and name a new type or type alias.</p><p><code>type_expr</code> is used when you refer to existing types, e.g. when annotating the expected type of a value.</p><p>Also, as the type system of OCaml is generative, a <code>type_declaration</code> can have the side-effect of introducing a new type constructor, different from all other known types. Whereas <code>type_expr</code> is a pure construct which allows referring to existing types.</p><p>Note on mutability: TBD.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_desc"><a href="#type-row_desc" class="anchor"></a><code><span><span class="keyword">type</span> row_desc</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">type</span> row_field</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-field_kind"><a href="#type-field_kind" class="anchor"></a><code><span><span class="keyword">type</span> field_kind</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-commutable"><a href="#type-commutable" class="anchor"></a><code><span><span class="keyword">type</span> commutable</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_desc"><a href="#type-type_desc" class="anchor"></a><code><span><span class="keyword">type</span> type_desc</span><span> = </span></code><ol><li id="type-type_desc.Tvar" class="def variant constructor anchored"><a href="#type-type_desc.Tvar" class="anchor"></a><code><span>| </span><span><span class="constructor">Tvar</span> <span class="keyword">of</span> <span>string option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tvar (Some "a")</code> ==> <code>'a</code> or <code>'_a</code> <code>Tvar None</code> ==> <code>_</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tarrow" class="def variant constructor anchored"><a href="#type-type_desc.Tarrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Tarrow</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <a href="#type-type_expr">type_expr</a> * <a href="#type-type_expr">type_expr</a> * <a href="#type-commutable">commutable</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tarrow (Nolabel, e1, e2, c)</code> ==> <code>e1 -> e2</code> <code>Tarrow (Labelled "l", e1, e2, c)</code> ==> <code>l:e1 -> e2</code> <code>Tarrow (Optional "l", e1, e2, c)</code> ==> <code>?l:e1 -> e2</code></p><p>See <code>commutable</code> for the last argument.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Ttuple" class="def variant constructor anchored"><a href="#type-type_desc.Ttuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Ttuple</span> <span class="keyword">of</span> <span><a href="#type-type_expr">type_expr</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ttuple [t1;...;tn]</code> ==> <code>(t1 * ... * tn)</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tconstr" class="def variant constructor anchored"><a href="#type-type_desc.Tconstr" class="anchor"></a><code><span>| </span><span><span class="constructor">Tconstr</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span> * <span><a href="#type-abbrev_memo">abbrev_memo</a> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tconstr (`A.B.t', [t1;...;tn], _)</code> ==> <code>(t1,...,tn) A.B.t</code> The last parameter keep tracks of known expansions, see <code>abbrev_memo</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tobject" class="def variant constructor anchored"><a href="#type-type_desc.Tobject" class="anchor"></a><code><span>| </span><span><span class="constructor">Tobject</span> <span class="keyword">of</span> <a href="#type-type_expr">type_expr</a> * <span><span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tobject (`f1:t1;...;fn: tn', `None')</code> ==> <code>< f1: t1; ...; fn: tn ></code> f1, fn are represented as a linked list of types using Tfield and Tnil constructors.</p><p><code>Tobject (_, `Some (`A.ct', [t1;...;tn]')</code> ==> <code>(t1, ..., tn) A.ct</code>. where A.ct is the type of some class.</p><p>There are also special cases for so-called "class-types", cf. <code>Typeclass</code> and <code>Ctype.set_object_name</code>:</p><p><code>Tobject (Tfield(_,_,...(Tfield(_,_,rv)...),
|
||
Some(`A.#ct`, [rv;t1;...;tn])</code> ==> <code>(t1, ..., tn) #A.ct</code> <code>Tobject (_, Some(`A.#ct`, [Tnil;t1;...;tn])</code> ==> <code>(t1, ..., tn) A.ct</code></p><p>where <code>rv</code> is the hidden row variable.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tfield" class="def variant constructor anchored"><a href="#type-type_desc.Tfield" class="anchor"></a><code><span>| </span><span><span class="constructor">Tfield</span> <span class="keyword">of</span> string * <a href="#type-field_kind">field_kind</a> * <a href="#type-type_expr">type_expr</a> * <a href="#type-type_expr">type_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tfield ("foo", field_public, t, ts)</code> ==> <code><...; foo : t; ts></code></p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tnil" class="def variant constructor anchored"><a href="#type-type_desc.Tnil" class="anchor"></a><code><span>| </span><span><span class="constructor">Tnil</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tnil</code> ==> <code><...; ></code></p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tlink" class="def variant constructor anchored"><a href="#type-type_desc.Tlink" class="anchor"></a><code><span>| </span><span><span class="constructor">Tlink</span> <span class="keyword">of</span> <a href="#type-type_expr">type_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Indirection used by unification engine.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tsubst" class="def variant constructor anchored"><a href="#type-type_desc.Tsubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Tsubst</span> <span class="keyword">of</span> <a href="#type-type_expr">type_expr</a> * <span><a href="#type-type_expr">type_expr</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tsubst</code> is used temporarily to store information in low-level functions manipulating representation of types, such as instantiation or copy. The first argument contains a copy of the original node. The second is available only when the first is the row variable of a polymorphic variant. It then contains a copy of the whole variant. This constructor should not appear outside of these cases.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tvariant" class="def variant constructor anchored"><a href="#type-type_desc.Tvariant" class="anchor"></a><code><span>| </span><span><span class="constructor">Tvariant</span> <span class="keyword">of</span> <a href="#type-row_desc">row_desc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Representation of polymorphic variants, see <code>row_desc</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tunivar" class="def variant constructor anchored"><a href="#type-type_desc.Tunivar" class="anchor"></a><code><span>| </span><span><span class="constructor">Tunivar</span> <span class="keyword">of</span> <span>string option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Occurrence of a type variable introduced by a forall quantifier / <code>Tpoly</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tpoly" class="def variant constructor anchored"><a href="#type-type_desc.Tpoly" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpoly</span> <span class="keyword">of</span> <a href="#type-type_expr">type_expr</a> * <span><a href="#type-type_expr">type_expr</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Tpoly (ty,tyl)</code> ==> <code>'a1... 'an. ty</code>, where 'a1 ... 'an are names given to types in tyl and occurrences of those types in ty.</p><span class="comment-delim">*)</span></div></li><li id="type-type_desc.Tpackage" class="def variant constructor anchored"><a href="#type-type_desc.Tpackage" class="anchor"></a><code><span>| </span><span><span class="constructor">Tpackage</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><span>(<a href="../Longident/index.html#type-t">Longident.t</a> * <a href="#type-type_expr">type_expr</a>)</span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Type of a first-class module (a.k.a package).</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-fixed_explanation"><a href="#type-fixed_explanation" class="anchor"></a><code><span><span class="keyword">and</span> fixed_explanation</span><span> = </span></code><ol><li id="type-fixed_explanation.Univar" class="def variant constructor anchored"><a href="#type-fixed_explanation.Univar" class="anchor"></a><code><span>| </span><span><span class="constructor">Univar</span> <span class="keyword">of</span> <a href="#type-type_expr">type_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The row type was bound to an univar</p><span class="comment-delim">*)</span></div></li><li id="type-fixed_explanation.Fixed_private" class="def variant constructor anchored"><a href="#type-fixed_explanation.Fixed_private" class="anchor"></a><code><span>| </span><span><span class="constructor">Fixed_private</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The row type is private</p><span class="comment-delim">*)</span></div></li><li id="type-fixed_explanation.Reified" class="def variant constructor anchored"><a href="#type-fixed_explanation.Reified" class="anchor"></a><code><span>| </span><span><span class="constructor">Reified</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The row was reified</p><span class="comment-delim">*)</span></div></li><li id="type-fixed_explanation.Rigid" class="def variant constructor anchored"><a href="#type-fixed_explanation.Rigid" class="anchor"></a><code><span>| </span><span><span class="constructor">Rigid</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The row type was made rigid during constraint verification</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-abbrev_memo"><a href="#type-abbrev_memo" class="anchor"></a><code><span><span class="keyword">and</span> abbrev_memo</span><span> = </span></code><ol><li id="type-abbrev_memo.Mnil" class="def variant constructor anchored"><a href="#type-abbrev_memo.Mnil" class="anchor"></a><code><span>| </span><span><span class="constructor">Mnil</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>No known abbreviation</p><span class="comment-delim">*)</span></div></li><li id="type-abbrev_memo.Mcons" class="def variant constructor anchored"><a href="#type-abbrev_memo.Mcons" class="anchor"></a><code><span>| </span><span><span class="constructor">Mcons</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a> * <a href="../Path/index.html#type-t">Path.t</a> * <a href="#type-type_expr">type_expr</a> * <a href="#type-type_expr">type_expr</a> * <a href="#type-abbrev_memo">abbrev_memo</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Found one abbreviation. A valid abbreviation should be at least as visible and reachable by the same path. The first expression is the abbreviation and the second the expansion.</p><span class="comment-delim">*)</span></div></li><li id="type-abbrev_memo.Mlink" class="def variant constructor anchored"><a href="#type-abbrev_memo.Mlink" class="anchor"></a><code><span>| </span><span><span class="constructor">Mlink</span> <span class="keyword">of</span> <span><a href="#type-abbrev_memo">abbrev_memo</a> <a href="../Stdlib/index.html#type-ref">ref</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Abbreviations can be found after this indirection</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p><code>abbrev_memo</code> allows one to keep track of different expansions of a type alias. This is done for performance purposes.</p><p>For instance, when defining <code>type 'a pair = 'a * 'a</code>, when one refers to an <code>'a pair</code>, it is just a shortcut for the <code>'a * 'a</code> type. This expansion will be stored in the <code>abbrev_memo</code> of the corresponding <code>Tconstr</code> node.</p><p>In practice, <code>abbrev_memo</code> behaves like list of expansions with a mutable tail.</p><p>Note on marshalling: <code>abbrev_memo</code> must not appear in saved types. <code>Btype</code>, with <code>cleanup_abbrev</code> and <code>memo</code>, takes care of tracking and removing abbreviations.</p></div></div><p><code>commutable</code> is a flag appended to every arrow type.</p><p>When typing an application, if the type of the functional is known, its type is instantiated with <code>commu_ok</code> arrows, otherwise as <code>commu_var ()</code>.</p><p>When the type is not known, the application will be used to infer the actual type. This is fragile in presence of labels where there is no principal type.</p><p>Two incompatible applications must rely on <code>is_commu_ok</code> arrows, otherwise they will trigger an error.</p><p>let f g = g ~a:() ~b:(); g ~b:() ~a:();</p><p>Error: This function is applied to arguments in an order different from other calls. This is only allowed when the real type is known.</p><div class="odoc-spec"><div class="spec value anchored" id="val-is_commu_ok"><a href="#val-is_commu_ok" class="anchor"></a><code><span><span class="keyword">val</span> is_commu_ok : <span><a href="#type-commutable">commutable</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-commu_ok"><a href="#val-commu_ok" class="anchor"></a><code><span><span class="keyword">val</span> commu_ok : <a href="#type-commutable">commutable</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-commu_var"><a href="#val-commu_var" class="anchor"></a><code><span><span class="keyword">val</span> commu_var : <span>unit <span class="arrow">-></span></span> <a href="#type-commutable">commutable</a></span></code></div></div><p><code>field_kind</code> indicates the accessibility of a method.</p><p>An <code>Fprivate</code> field may become <code>Fpublic</code> or <code>Fabsent</code> during unification, but not the other way round.</p><p>The same <code>field_kind</code> is kept shared when copying <code>Tfield</code> nodes so that the copies of the self-type of a class share the same accessibility (see also PR#10539).</p><div class="odoc-spec"><div class="spec type anchored" id="type-field_kind_view"><a href="#type-field_kind_view" class="anchor"></a><code><span><span class="keyword">type</span> field_kind_view</span><span> = </span></code><ol><li id="type-field_kind_view.Fprivate" class="def variant constructor anchored"><a href="#type-field_kind_view.Fprivate" class="anchor"></a><code><span>| </span><span><span class="constructor">Fprivate</span></span></code></li><li id="type-field_kind_view.Fpublic" class="def variant constructor anchored"><a href="#type-field_kind_view.Fpublic" class="anchor"></a><code><span>| </span><span><span class="constructor">Fpublic</span></span></code></li><li id="type-field_kind_view.Fabsent" class="def variant constructor anchored"><a href="#type-field_kind_view.Fabsent" class="anchor"></a><code><span>| </span><span><span class="constructor">Fabsent</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field_kind_repr"><a href="#val-field_kind_repr" class="anchor"></a><code><span><span class="keyword">val</span> field_kind_repr : <span><a href="#type-field_kind">field_kind</a> <span class="arrow">-></span></span> <a href="#type-field_kind_view">field_kind_view</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field_public"><a href="#val-field_public" class="anchor"></a><code><span><span class="keyword">val</span> field_public : <a href="#type-field_kind">field_kind</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field_absent"><a href="#val-field_absent" class="anchor"></a><code><span><span class="keyword">val</span> field_absent : <a href="#type-field_kind">field_kind</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field_private"><a href="#val-field_private" class="anchor"></a><code><span><span class="keyword">val</span> field_private : <span>unit <span class="arrow">-></span></span> <a href="#type-field_kind">field_kind</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-field_kind_internal_repr"><a href="#val-field_kind_internal_repr" class="anchor"></a><code><span><span class="keyword">val</span> field_kind_internal_repr : <span><a href="#type-field_kind">field_kind</a> <span class="arrow">-></span></span> <a href="#type-field_kind">field_kind</a></span></code></div></div><p>Getters for type_expr; calls repr before answering a value</p><div class="odoc-spec"><div class="spec value anchored" id="val-get_desc"><a href="#val-get_desc" class="anchor"></a><code><span><span class="keyword">val</span> get_desc : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <a href="#type-type_desc">type_desc</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_level"><a href="#val-get_level" class="anchor"></a><code><span><span class="keyword">val</span> get_level : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_scope"><a href="#val-get_scope" class="anchor"></a><code><span><span class="keyword">val</span> get_scope : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_id"><a href="#val-get_id" class="anchor"></a><code><span><span class="keyword">val</span> get_id : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-transient_expr"><a href="#type-transient_expr" class="anchor"></a><code><span><span class="keyword">type</span> transient_expr</span><span> = <span class="keyword">private</span> </span><span>{</span></code><ol><li id="type-transient_expr.desc" class="def record field anchored"><a href="#type-transient_expr.desc" class="anchor"></a><code><span><span class="keyword">mutable</span> desc : <a href="#type-type_desc">type_desc</a>;</span></code></li><li id="type-transient_expr.level" class="def record field anchored"><a href="#type-transient_expr.level" class="anchor"></a><code><span><span class="keyword">mutable</span> level : int;</span></code></li><li id="type-transient_expr.scope" class="def record field anchored"><a href="#type-transient_expr.scope" class="anchor"></a><code><span><span class="keyword">mutable</span> scope : int;</span></code></li><li id="type-transient_expr.id" class="def record field anchored"><a href="#type-transient_expr.id" class="anchor"></a><code><span>id : int;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Transient <code>type_expr</code>. Should only be used immediately after <code>Transient_expr.repr</code></p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Transient_expr"><a href="#module-Transient_expr" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Transient_expr/index.html">Transient_expr</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Operations on <code>transient_expr</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_expr"><a href="#val-create_expr" class="anchor"></a><code><span><span class="keyword">val</span> create_expr : <span><a href="#type-type_desc">type_desc</a> <span class="arrow">-></span></span> <span><span class="label">level</span>:int <span class="arrow">-></span></span> <span><span class="label">scope</span>:int <span class="arrow">-></span></span> <span><span class="label">id</span>:int <span class="arrow">-></span></span> <a href="#type-type_expr">type_expr</a></span></code></div></div><p>Functions and definitions moved from Btype</p><div class="odoc-spec"><div class="spec value anchored" id="val-newty3"><a href="#val-newty3" class="anchor"></a><code><span><span class="keyword">val</span> newty3 : <span><span class="label">level</span>:int <span class="arrow">-></span></span> <span><span class="label">scope</span>:int <span class="arrow">-></span></span> <span><a href="#type-type_desc">type_desc</a> <span class="arrow">-></span></span> <a href="#type-type_expr">type_expr</a></span></code></div><div class="spec-doc"><p>Create a type with a fresh id</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-newty2"><a href="#val-newty2" class="anchor"></a><code><span><span class="keyword">val</span> newty2 : <span><span class="label">level</span>:int <span class="arrow">-></span></span> <span><a href="#type-type_desc">type_desc</a> <span class="arrow">-></span></span> <a href="#type-type_expr">type_expr</a></span></code></div><div class="spec-doc"><p>Create a type with a fresh id and no scope</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-TransientTypeOps"><a href="#module-TransientTypeOps" class="anchor"></a><code><span><span class="keyword">module</span> <a href="TransientTypeOps/index.html">TransientTypeOps</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Comparisons for functors</p></div></div><p>Comparisons for <code>type_expr</code>; cannot be used for functors</p><div class="odoc-spec"><div class="spec value anchored" id="val-eq_type"><a href="#val-eq_type" class="anchor"></a><code><span><span class="keyword">val</span> eq_type : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_type"><a href="#val-compare_type" class="anchor"></a><code><span><span class="keyword">val</span> compare_type : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> int</span></code></div></div><p>Constructor and accessors for <code>row_desc</code></p><p><code> `X | `Y </code> (row_closed = true) <code>< `X | `Y </code> (row_closed = true) <code>> `X | `Y </code> (row_closed = false) <code>< `X | `Y > `X </code> (row_closed = true)</p><p>type t = <code>> `X </code> as 'a (row_more = Tvar a) type t = private <code>> `X </code> (row_more = Tconstr ("t#row", , ref Mnil))</p><p>And for:</p><p>let f = function `X -> `X -> | `Y -> `X</p><p>the type of "f" will be a <code>Tarrow</code> whose lhs will (basically) be:</p><p>Tvariant <code> row_fields = [("X", _)];
|
||
row_more =
|
||
Tvariant { row_fields = [("Y", _)];
|
||
row_more =
|
||
Tvariant { row_fields = [];
|
||
row_more = _;
|
||
_ </code>; _</p><p>}</p><p>; _</p><p>}</p><div class="odoc-spec"><div class="spec value anchored" id="val-create_row"><a href="#val-create_row" class="anchor"></a><code><span><span class="keyword">val</span> create_row :
|
||
<span><span class="label">fields</span>:<span><span>(<a href="../Asttypes/index.html#type-label">Asttypes.label</a> * <a href="#type-row_field">row_field</a>)</span> list</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">more</span>:<a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span>
|
||
<span><span class="label">closed</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="label">fixed</span>:<span><a href="#type-fixed_explanation">fixed_explanation</a> option</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">name</span>:<span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span> <span class="arrow">-></span></span>
|
||
<a href="#type-row_desc">row_desc</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_fields"><a href="#val-row_fields" class="anchor"></a><code><span><span class="keyword">val</span> row_fields : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <span><span>(<a href="../Asttypes/index.html#type-label">Asttypes.label</a> * <a href="#type-row_field">row_field</a>)</span> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_more"><a href="#val-row_more" class="anchor"></a><code><span><span class="keyword">val</span> row_more : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <a href="#type-type_expr">type_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_closed"><a href="#val-row_closed" class="anchor"></a><code><span><span class="keyword">val</span> row_closed : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_fixed"><a href="#val-row_fixed" class="anchor"></a><code><span><span class="keyword">val</span> row_fixed : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <span><a href="#type-fixed_explanation">fixed_explanation</a> option</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_name"><a href="#val-row_name" class="anchor"></a><code><span><span class="keyword">val</span> row_name : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_row_name"><a href="#val-set_row_name" class="anchor"></a><code><span><span class="keyword">val</span> set_row_name : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <span><span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span> <span class="arrow">-></span></span> <a href="#type-row_desc">row_desc</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_row_field"><a href="#val-get_row_field" class="anchor"></a><code><span><span class="keyword">val</span> get_row_field : <span><a href="../Asttypes/index.html#type-label">Asttypes.label</a> <span class="arrow">-></span></span> <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <a href="#type-row_field">row_field</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_desc_repr"><a href="#type-row_desc_repr" class="anchor"></a><code><span><span class="keyword">type</span> row_desc_repr</span><span> = </span></code><ol><li id="type-row_desc_repr.Row" class="def variant constructor anchored"><a href="#type-row_desc_repr.Row" class="anchor"></a><code><span>| </span><span><span class="constructor">Row</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-row_desc_repr.fields" class="def record field anchored"><a href="#type-row_desc_repr.fields" class="anchor"></a><code><span>fields : <span><span>(<a href="../Asttypes/index.html#type-label">Asttypes.label</a> * <a href="#type-row_field">row_field</a>)</span> list</span>;</span></code></li><li id="type-row_desc_repr.more" class="def record field anchored"><a href="#type-row_desc_repr.more" class="anchor"></a><code><span>more : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-row_desc_repr.closed" class="def record field anchored"><a href="#type-row_desc_repr.closed" class="anchor"></a><code><span>closed : bool;</span></code></li><li id="type-row_desc_repr.fixed" class="def record field anchored"><a href="#type-row_desc_repr.fixed" class="anchor"></a><code><span>fixed : <span><a href="#type-fixed_explanation">fixed_explanation</a> option</span>;</span></code></li><li id="type-row_desc_repr.name" class="def record field anchored"><a href="#type-row_desc_repr.name" class="anchor"></a><code><span>name : <span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span>;</span></code></li></ol><code><span>}</span></code></li></ol></div><div class="spec-doc"><p>get all fields at once; different from the old <code>row_repr</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_repr"><a href="#val-row_repr" class="anchor"></a><code><span><span class="keyword">val</span> row_repr : <span><a href="#type-row_desc">row_desc</a> <span class="arrow">-></span></span> <a href="#type-row_desc_repr">row_desc_repr</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_field_view"><a href="#type-row_field_view" class="anchor"></a><code><span><span class="keyword">type</span> row_field_view</span><span> = </span></code><ol><li id="type-row_field_view.Rpresent" class="def variant constructor anchored"><a href="#type-row_field_view.Rpresent" class="anchor"></a><code><span>| </span><span><span class="constructor">Rpresent</span> <span class="keyword">of</span> <span><a href="#type-type_expr">type_expr</a> option</span></span></code></li><li id="type-row_field_view.Reither" class="def variant constructor anchored"><a href="#type-row_field_view.Reither" class="anchor"></a><code><span>| </span><span><span class="constructor">Reither</span> <span class="keyword">of</span> bool * <span><a href="#type-type_expr">type_expr</a> list</span> * bool</span></code></li><li id="type-row_field_view.Rabsent" class="def variant constructor anchored"><a href="#type-row_field_view.Rabsent" class="anchor"></a><code><span>| </span><span><span class="constructor">Rabsent</span></span></code></li></ol></div><div class="spec-doc"><p>Current contents of a row field</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-row_field_repr"><a href="#val-row_field_repr" class="anchor"></a><code><span><span class="keyword">val</span> row_field_repr : <span><a href="#type-row_field">row_field</a> <span class="arrow">-></span></span> <a href="#type-row_field_view">row_field_view</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rf_present"><a href="#val-rf_present" class="anchor"></a><code><span><span class="keyword">val</span> rf_present : <span><span><a href="#type-type_expr">type_expr</a> option</span> <span class="arrow">-></span></span> <a href="#type-row_field">row_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rf_absent"><a href="#val-rf_absent" class="anchor"></a><code><span><span class="keyword">val</span> rf_absent : <a href="#type-row_field">row_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rf_either"><a href="#val-rf_either" class="anchor"></a><code><span><span class="keyword">val</span> rf_either :
|
||
<span><span class="optlabel">?use_ext_of</span>:<a href="#type-row_field">row_field</a> <span class="arrow">-></span></span>
|
||
<span><span class="label">no_arg</span>:bool <span class="arrow">-></span></span>
|
||
<span><span><a href="#type-type_expr">type_expr</a> list</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">matched</span>:bool <span class="arrow">-></span></span>
|
||
<a href="#type-row_field">row_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rf_either_of"><a href="#val-rf_either_of" class="anchor"></a><code><span><span class="keyword">val</span> rf_either_of : <span><span><a href="#type-type_expr">type_expr</a> option</span> <span class="arrow">-></span></span> <a href="#type-row_field">row_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-eq_row_field_ext"><a href="#val-eq_row_field_ext" class="anchor"></a><code><span><span class="keyword">val</span> eq_row_field_ext : <span><a href="#type-row_field">row_field</a> <span class="arrow">-></span></span> <span><a href="#type-row_field">row_field</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-changed_row_field_exts"><a href="#val-changed_row_field_exts" class="anchor"></a><code><span><span class="keyword">val</span> changed_row_field_exts : <span><span><a href="#type-row_field">row_field</a> list</span> <span class="arrow">-></span></span> <span><span>(<span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-match_row_field"><a href="#val-match_row_field" class="anchor"></a><code><span><span class="keyword">val</span> match_row_field :
|
||
<span><span class="label">present</span>:<span>(<span><span><a href="#type-type_expr">type_expr</a> option</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">absent</span>:<span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">either</span>:<span>(<span>bool <span class="arrow">-></span></span> <span><span><a href="#type-type_expr">type_expr</a> list</span> <span class="arrow">-></span></span> <span>bool <span class="arrow">-></span></span> <span><span><a href="#type-row_field">row_field</a> option</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span>
|
||
<span><a href="#type-row_field">row_field</a> <span class="arrow">-></span></span>
|
||
<span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Uid"><a href="#module-Uid" class="anchor"></a><code><span><span class="keyword">module</span> Uid</span><span> = <a href="../Shape/Uid/index.html">Shape.Uid</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-MethSet"><a href="#module-MethSet" class="anchor"></a><code><span><span class="keyword">module</span> <a href="MethSet/index.html">MethSet</a></span><span> : <a href="../Stdlib/Set/module-type-S/index.html">Set.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Set/module-type-S/index.html#type-elt">elt</a> = string</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-VarSet"><a href="#module-VarSet" class="anchor"></a><code><span><span class="keyword">module</span> <a href="VarSet/index.html">VarSet</a></span><span> : <a href="../Stdlib/Set/module-type-S/index.html">Set.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Set/module-type-S/index.html#type-elt">elt</a> = string</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Meths"><a href="#module-Meths" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Meths/index.html">Meths</a></span><span> : <a href="../Stdlib/Map/module-type-S/index.html">Map.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Map/module-type-S/index.html#type-key">key</a> = string</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Vars"><a href="#module-Vars" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Vars/index.html">Vars</a></span><span> : <a href="../Stdlib/Map/module-type-S/index.html">Map.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Map/module-type-S/index.html#type-key">key</a> = string</span></span></code></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">type</span> value_description</span><span> = </span><span>{</span></code><ol><li id="type-value_description.val_type" class="def record field anchored"><a href="#type-value_description.val_type" class="anchor"></a><code><span>val_type : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-value_description.val_kind" class="def record field anchored"><a href="#type-value_description.val_kind" class="anchor"></a><code><span>val_kind : <a href="#type-value_kind">value_kind</a>;</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="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-value_description.val_uid" class="def record field anchored"><a href="#type-value_description.val_uid" class="anchor"></a><code><span>val_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-value_kind"><a href="#type-value_kind" class="anchor"></a><code><span><span class="keyword">and</span> value_kind</span><span> = </span></code><ol><li id="type-value_kind.Val_reg" class="def variant constructor anchored"><a href="#type-value_kind.Val_reg" class="anchor"></a><code><span>| </span><span><span class="constructor">Val_reg</span></span></code></li><li id="type-value_kind.Val_prim" class="def variant constructor anchored"><a href="#type-value_kind.Val_prim" class="anchor"></a><code><span>| </span><span><span class="constructor">Val_prim</span> <span class="keyword">of</span> <a href="../Primitive/index.html#type-description">Primitive.description</a></span></code></li><li id="type-value_kind.Val_ivar" class="def variant constructor anchored"><a href="#type-value_kind.Val_ivar" class="anchor"></a><code><span>| </span><span><span class="constructor">Val_ivar</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a> * string</span></code></li><li id="type-value_kind.Val_self" class="def variant constructor anchored"><a href="#type-value_kind.Val_self" class="anchor"></a><code><span>| </span><span><span class="constructor">Val_self</span> <span class="keyword">of</span> <a href="#type-class_signature">class_signature</a> * <a href="#type-self_meths">self_meths</a> * <span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="Vars/index.html#type-t">Vars.t</a></span> * string</span></code></li><li id="type-value_kind.Val_anc" class="def variant constructor anchored"><a href="#type-value_kind.Val_anc" class="anchor"></a><code><span>| </span><span><span class="constructor">Val_anc</span> <span class="keyword">of</span> <a href="#type-class_signature">class_signature</a> * <span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="Meths/index.html#type-t">Meths.t</a></span> * string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-self_meths"><a href="#type-self_meths" class="anchor"></a><code><span><span class="keyword">and</span> self_meths</span><span> = </span></code><ol><li id="type-self_meths.Self_concrete" class="def variant constructor anchored"><a href="#type-self_meths.Self_concrete" class="anchor"></a><code><span>| </span><span><span class="constructor">Self_concrete</span> <span class="keyword">of</span> <span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="Meths/index.html#type-t">Meths.t</a></span></span></code></li><li id="type-self_meths.Self_virtual" class="def variant constructor anchored"><a href="#type-self_meths.Self_virtual" class="anchor"></a><code><span>| </span><span><span class="constructor">Self_virtual</span> <span class="keyword">of</span> <span><span><a href="../Ident/index.html#type-t">Ident.t</a> <a href="Meths/index.html#type-t">Meths.t</a></span> <a href="../Stdlib/index.html#type-ref">ref</a></span></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-type_expr">type_expr</a>;</span></code></li><li id="type-class_signature.csig_self_row" class="def record field anchored"><a href="#type-class_signature.csig_self_row" class="anchor"></a><code><span><span class="keyword">mutable</span> csig_self_row : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-class_signature.csig_vars" class="def record field anchored"><a href="#type-class_signature.csig_vars" class="anchor"></a><code><span><span class="keyword">mutable</span> csig_vars : <span><span>(<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-type_expr">type_expr</a>)</span>
|
||
<a href="Vars/index.html#type-t">Vars.t</a></span>;</span></code></li><li id="type-class_signature.csig_meths" class="def record field anchored"><a href="#type-class_signature.csig_meths" class="anchor"></a><code><span><span class="keyword">mutable</span> csig_meths : <span><span>(<a href="#type-method_privacy">method_privacy</a> * <a href="../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a> * <a href="#type-type_expr">type_expr</a>)</span>
|
||
<a href="Meths/index.html#type-t">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-method_privacy"><a href="#type-method_privacy" class="anchor"></a><code><span><span class="keyword">and</span> method_privacy</span><span> = </span></code><ol><li id="type-method_privacy.Mpublic" class="def variant constructor anchored"><a href="#type-method_privacy.Mpublic" class="anchor"></a><code><span>| </span><span><span class="constructor">Mpublic</span></span></code></li><li id="type-method_privacy.Mprivate" class="def variant constructor anchored"><a href="#type-method_privacy.Mprivate" class="anchor"></a><code><span>| </span><span><span class="constructor">Mprivate</span> <span class="keyword">of</span> <a href="#type-field_kind">field_kind</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Variance"><a href="#module-Variance" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Variance/index.html">Variance</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Separability"><a href="#module-Separability" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Separability/index.html">Separability</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>see <a href="../Typedecl_separability/index.html"><code>Typedecl_separability</code></a> for an explanation of separability and separability modes.</p></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">type</span> type_declaration</span><span> = </span><span>{</span></code><ol><li id="type-type_declaration.type_params" class="def record field anchored"><a href="#type-type_declaration.type_params" class="anchor"></a><code><span>type_params : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-type_declaration.type_arity" class="def record field anchored"><a href="#type-type_declaration.type_arity" class="anchor"></a><code><span>type_arity : int;</span></code></li><li id="type-type_declaration.type_kind" class="def record field anchored"><a href="#type-type_declaration.type_kind" class="anchor"></a><code><span>type_kind : <a href="#type-type_decl_kind">type_decl_kind</a>;</span></code></li><li id="type-type_declaration.type_private" class="def record field anchored"><a href="#type-type_declaration.type_private" class="anchor"></a><code><span>type_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>;</span></code></li><li id="type-type_declaration.type_manifest" class="def record field anchored"><a href="#type-type_declaration.type_manifest" class="anchor"></a><code><span>type_manifest : <span><a href="#type-type_expr">type_expr</a> option</span>;</span></code></li><li id="type-type_declaration.type_variance" class="def record field anchored"><a href="#type-type_declaration.type_variance" class="anchor"></a><code><span>type_variance : <span><a href="Variance/index.html#type-t">Variance.t</a> list</span>;</span></code></li><li id="type-type_declaration.type_separability" class="def record field anchored"><a href="#type-type_declaration.type_separability" class="anchor"></a><code><span>type_separability : <span><a href="Separability/index.html#type-t">Separability.t</a> list</span>;</span></code></li><li id="type-type_declaration.type_is_newtype" class="def record field anchored"><a href="#type-type_declaration.type_is_newtype" class="anchor"></a><code><span>type_is_newtype : bool;</span></code></li><li id="type-type_declaration.type_expansion_scope" class="def record field anchored"><a href="#type-type_declaration.type_expansion_scope" class="anchor"></a><code><span>type_expansion_scope : int;</span></code></li><li id="type-type_declaration.type_loc" class="def record field anchored"><a href="#type-type_declaration.type_loc" class="anchor"></a><code><span>type_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-type_declaration.type_attributes" class="def record field anchored"><a href="#type-type_declaration.type_attributes" class="anchor"></a><code><span>type_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-type_declaration.type_immediate" class="def record field anchored"><a href="#type-type_declaration.type_immediate" class="anchor"></a><code><span>type_immediate : <a href="../Type_immediacy/index.html#type-t">Type_immediacy.t</a>;</span></code></li><li id="type-type_declaration.type_unboxed_default" class="def record field anchored"><a href="#type-type_declaration.type_unboxed_default" class="anchor"></a><code><span>type_unboxed_default : bool;</span></code></li><li id="type-type_declaration.type_uid" class="def record field anchored"><a href="#type-type_declaration.type_uid" class="anchor"></a><code><span>type_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_decl_kind"><a href="#type-type_decl_kind" class="anchor"></a><code><span><span class="keyword">and</span> type_decl_kind</span><span> = <span><span>(<a href="#type-label_declaration">label_declaration</a>, <a href="#type-constructor_declaration">constructor_declaration</a>)</span> <a href="#type-type_kind">type_kind</a></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> <span>('lbl, 'cstr) type_kind</span></span><span> = </span></code><ol><li id="type-type_kind.Type_abstract" class="def variant constructor anchored"><a href="#type-type_kind.Type_abstract" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_abstract</span></span></code></li><li id="type-type_kind.Type_record" class="def variant constructor anchored"><a href="#type-type_kind.Type_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_record</span> <span class="keyword">of</span> <span><span class="type-var">'lbl</span> list</span> * <a href="#type-record_representation">record_representation</a></span></code></li><li id="type-type_kind.Type_variant" class="def variant constructor anchored"><a href="#type-type_kind.Type_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_variant</span> <span class="keyword">of</span> <span><span class="type-var">'cstr</span> list</span> * <a href="#type-variant_representation">variant_representation</a></span></code></li><li id="type-type_kind.Type_open" class="def variant constructor anchored"><a href="#type-type_kind.Type_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_open</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-record_representation"><a href="#type-record_representation" class="anchor"></a><code><span><span class="keyword">and</span> record_representation</span><span> = </span></code><ol><li id="type-record_representation.Record_regular" class="def variant constructor anchored"><a href="#type-record_representation.Record_regular" class="anchor"></a><code><span>| </span><span><span class="constructor">Record_regular</span></span></code></li><li id="type-record_representation.Record_float" class="def variant constructor anchored"><a href="#type-record_representation.Record_float" class="anchor"></a><code><span>| </span><span><span class="constructor">Record_float</span></span></code></li><li id="type-record_representation.Record_unboxed" class="def variant constructor anchored"><a href="#type-record_representation.Record_unboxed" class="anchor"></a><code><span>| </span><span><span class="constructor">Record_unboxed</span> <span class="keyword">of</span> bool</span></code></li><li id="type-record_representation.Record_inlined" class="def variant constructor anchored"><a href="#type-record_representation.Record_inlined" class="anchor"></a><code><span>| </span><span><span class="constructor">Record_inlined</span> <span class="keyword">of</span> int</span></code></li><li id="type-record_representation.Record_extension" class="def variant constructor anchored"><a href="#type-record_representation.Record_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Record_extension</span> <span class="keyword">of</span> <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-variant_representation"><a href="#type-variant_representation" class="anchor"></a><code><span><span class="keyword">and</span> variant_representation</span><span> = </span></code><ol><li id="type-variant_representation.Variant_regular" class="def variant constructor anchored"><a href="#type-variant_representation.Variant_regular" class="anchor"></a><code><span>| </span><span><span class="constructor">Variant_regular</span></span></code></li><li id="type-variant_representation.Variant_unboxed" class="def variant constructor anchored"><a href="#type-variant_representation.Variant_unboxed" class="anchor"></a><code><span>| </span><span><span class="constructor">Variant_unboxed</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_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-type_expr">type_expr</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="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-label_declaration.ld_uid" class="def record field anchored"><a href="#type-label_declaration.ld_uid" class="anchor"></a><code><span>ld_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</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_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-type_expr">type_expr</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="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-constructor_declaration.cd_uid" class="def record field anchored"><a href="#type-constructor_declaration.cd_uid" class="anchor"></a><code><span>cd_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</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-type_expr">type_expr</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-extension_constructor"><a href="#type-extension_constructor" class="anchor"></a><code><span><span class="keyword">type</span> extension_constructor</span><span> = </span><span>{</span></code><ol><li id="type-extension_constructor.ext_type_path" class="def record field anchored"><a href="#type-extension_constructor.ext_type_path" class="anchor"></a><code><span>ext_type_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-extension_constructor.ext_type_params" class="def record field anchored"><a href="#type-extension_constructor.ext_type_params" class="anchor"></a><code><span>ext_type_params : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-extension_constructor.ext_args" class="def record field anchored"><a href="#type-extension_constructor.ext_args" class="anchor"></a><code><span>ext_args : <a href="#type-constructor_arguments">constructor_arguments</a>;</span></code></li><li id="type-extension_constructor.ext_ret_type" class="def record field anchored"><a href="#type-extension_constructor.ext_ret_type" class="anchor"></a><code><span>ext_ret_type : <span><a href="#type-type_expr">type_expr</a> option</span>;</span></code></li><li id="type-extension_constructor.ext_private" class="def record field anchored"><a href="#type-extension_constructor.ext_private" class="anchor"></a><code><span>ext_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</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="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-extension_constructor.ext_uid" class="def record field anchored"><a href="#type-extension_constructor.ext_uid" class="anchor"></a><code><span>ext_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_transparence"><a href="#type-type_transparence" class="anchor"></a><code><span><span class="keyword">and</span> type_transparence</span><span> = </span></code><ol><li id="type-type_transparence.Type_public" class="def variant constructor anchored"><a href="#type-type_transparence.Type_public" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_public</span></span></code></li><li id="type-type_transparence.Type_new" class="def variant constructor anchored"><a href="#type-type_transparence.Type_new" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_new</span></span></code></li><li id="type-type_transparence.Type_private" class="def variant constructor anchored"><a href="#type-type_transparence.Type_private" class="anchor"></a><code><span>| </span><span><span class="constructor">Type_private</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">type</span> class_type</span><span> = </span></code><ol><li id="type-class_type.Cty_constr" class="def variant constructor anchored"><a href="#type-class_type.Cty_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Cty_constr</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span> * <a href="#type-class_type">class_type</a></span></code></li><li id="type-class_type.Cty_signature" class="def variant constructor anchored"><a href="#type-class_type.Cty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Cty_signature</span> <span class="keyword">of</span> <a href="#type-class_signature">class_signature</a></span></code></li><li id="type-class_type.Cty_arrow" class="def variant constructor anchored"><a href="#type-class_type.Cty_arrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Cty_arrow</span> <span class="keyword">of</span> <a href="../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <a href="#type-type_expr">type_expr</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_declaration"><a href="#type-class_declaration" class="anchor"></a><code><span><span class="keyword">type</span> class_declaration</span><span> = </span><span>{</span></code><ol><li id="type-class_declaration.cty_params" class="def record field anchored"><a href="#type-class_declaration.cty_params" class="anchor"></a><code><span>cty_params : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-class_declaration.cty_type" class="def record field anchored"><a href="#type-class_declaration.cty_type" class="anchor"></a><code><span><span class="keyword">mutable</span> cty_type : <a href="#type-class_type">class_type</a>;</span></code></li><li id="type-class_declaration.cty_path" class="def record field anchored"><a href="#type-class_declaration.cty_path" class="anchor"></a><code><span>cty_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-class_declaration.cty_new" class="def record field anchored"><a href="#type-class_declaration.cty_new" class="anchor"></a><code><span>cty_new : <span><a href="#type-type_expr">type_expr</a> option</span>;</span></code></li><li id="type-class_declaration.cty_variance" class="def record field anchored"><a href="#type-class_declaration.cty_variance" class="anchor"></a><code><span>cty_variance : <span><a href="Variance/index.html#type-t">Variance.t</a> list</span>;</span></code></li><li id="type-class_declaration.cty_loc" class="def record field anchored"><a href="#type-class_declaration.cty_loc" class="anchor"></a><code><span>cty_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_declaration.cty_attributes" class="def record field anchored"><a href="#type-class_declaration.cty_attributes" class="anchor"></a><code><span>cty_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-class_declaration.cty_uid" class="def record field anchored"><a href="#type-class_declaration.cty_uid" class="anchor"></a><code><span>cty_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><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">type</span> class_type_declaration</span><span> = </span><span>{</span></code><ol><li id="type-class_type_declaration.clty_params" class="def record field anchored"><a href="#type-class_type_declaration.clty_params" class="anchor"></a><code><span>clty_params : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-class_type_declaration.clty_type" class="def record field anchored"><a href="#type-class_type_declaration.clty_type" class="anchor"></a><code><span>clty_type : <a href="#type-class_type">class_type</a>;</span></code></li><li id="type-class_type_declaration.clty_path" class="def record field anchored"><a href="#type-class_type_declaration.clty_path" class="anchor"></a><code><span>clty_path : <a href="../Path/index.html#type-t">Path.t</a>;</span></code></li><li id="type-class_type_declaration.clty_variance" class="def record field anchored"><a href="#type-class_type_declaration.clty_variance" class="anchor"></a><code><span>clty_variance : <span><a href="Variance/index.html#type-t">Variance.t</a> list</span>;</span></code></li><li id="type-class_type_declaration.clty_loc" class="def record field anchored"><a href="#type-class_type_declaration.clty_loc" class="anchor"></a><code><span>clty_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-class_type_declaration.clty_attributes" class="def record field anchored"><a href="#type-class_type_declaration.clty_attributes" class="anchor"></a><code><span>clty_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-class_type_declaration.clty_uid" class="def record field anchored"><a href="#type-class_type_declaration.clty_uid" class="anchor"></a><code><span>clty_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-visibility"><a href="#type-visibility" class="anchor"></a><code><span><span class="keyword">type</span> visibility</span><span> = </span></code><ol><li id="type-visibility.Exported" class="def variant constructor anchored"><a href="#type-visibility.Exported" class="anchor"></a><code><span>| </span><span><span class="constructor">Exported</span></span></code></li><li id="type-visibility.Hidden" class="def variant constructor anchored"><a href="#type-visibility.Hidden" class="anchor"></a><code><span>| </span><span><span class="constructor">Hidden</span></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">type</span> module_type</span><span> = </span></code><ol><li id="type-module_type.Mty_ident" class="def variant constructor anchored"><a href="#type-module_type.Mty_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Mty_ident</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a></span></code></li><li id="type-module_type.Mty_signature" class="def variant constructor anchored"><a href="#type-module_type.Mty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Mty_signature</span> <span class="keyword">of</span> <a href="#type-signature">signature</a></span></code></li><li id="type-module_type.Mty_functor" class="def variant constructor anchored"><a href="#type-module_type.Mty_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Mty_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.Mty_alias" class="def variant constructor anchored"><a href="#type-module_type.Mty_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Mty_alias</span> <span class="keyword">of</span> <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-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> * <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_presence"><a href="#type-module_presence" class="anchor"></a><code><span><span class="keyword">and</span> module_presence</span><span> = </span></code><ol><li id="type-module_presence.Mp_present" class="def variant constructor anchored"><a href="#type-module_presence.Mp_present" class="anchor"></a><code><span>| </span><span><span class="constructor">Mp_present</span></span></code></li><li id="type-module_presence.Mp_absent" class="def variant constructor anchored"><a href="#type-module_presence.Mp_absent" class="anchor"></a><code><span>| </span><span><span class="constructor">Mp_absent</span></span></code></li></ol></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><a href="#type-signature_item">signature_item</a> list</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></code><ol><li id="type-signature_item.Sig_value" class="def variant constructor anchored"><a href="#type-signature_item.Sig_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_value</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-value_description">value_description</a> * <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_type" class="def variant constructor anchored"><a href="#type-signature_item.Sig_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_type</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-type_declaration">type_declaration</a> * <a href="#type-rec_status">rec_status</a> * <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_typext" class="def variant constructor anchored"><a href="#type-signature_item.Sig_typext" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_typext</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-extension_constructor">extension_constructor</a> * <a href="#type-ext_status">ext_status</a> * <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_module" class="def variant constructor anchored"><a href="#type-signature_item.Sig_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_module</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a>
|
||
* <a href="#type-module_presence">module_presence</a>
|
||
* <a href="#type-module_declaration">module_declaration</a>
|
||
* <a href="#type-rec_status">rec_status</a>
|
||
* <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_modtype" class="def variant constructor anchored"><a href="#type-signature_item.Sig_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_modtype</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-modtype_declaration">modtype_declaration</a> * <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_class" class="def variant constructor anchored"><a href="#type-signature_item.Sig_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_class</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-class_declaration">class_declaration</a> * <a href="#type-rec_status">rec_status</a> * <a href="#type-visibility">visibility</a></span></code></li><li id="type-signature_item.Sig_class_type" class="def variant constructor anchored"><a href="#type-signature_item.Sig_class_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Sig_class_type</span> <span class="keyword">of</span> <a href="../Ident/index.html#type-t">Ident.t</a> * <a href="#type-class_type_declaration">class_type_declaration</a> * <a href="#type-rec_status">rec_status</a> * <a href="#type-visibility">visibility</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_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="../Parsetree/index.html#type-attributes">Parsetree.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><li id="type-module_declaration.md_uid" class="def record field anchored"><a href="#type-module_declaration.md_uid" class="anchor"></a><code><span>md_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-modtype_declaration"><a href="#type-modtype_declaration" class="anchor"></a><code><span><span class="keyword">and</span> modtype_declaration</span><span> = </span><span>{</span></code><ol><li id="type-modtype_declaration.mtd_type" class="def record field anchored"><a href="#type-modtype_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-modtype_declaration.mtd_attributes" class="def record field anchored"><a href="#type-modtype_declaration.mtd_attributes" class="anchor"></a><code><span>mtd_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-modtype_declaration.mtd_loc" class="def record field anchored"><a href="#type-modtype_declaration.mtd_loc" class="anchor"></a><code><span>mtd_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-modtype_declaration.mtd_uid" class="def record field anchored"><a href="#type-modtype_declaration.mtd_uid" class="anchor"></a><code><span>mtd_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-rec_status"><a href="#type-rec_status" class="anchor"></a><code><span><span class="keyword">and</span> rec_status</span><span> = </span></code><ol><li id="type-rec_status.Trec_not" class="def variant constructor anchored"><a href="#type-rec_status.Trec_not" class="anchor"></a><code><span>| </span><span><span class="constructor">Trec_not</span></span></code></li><li id="type-rec_status.Trec_first" class="def variant constructor anchored"><a href="#type-rec_status.Trec_first" class="anchor"></a><code><span>| </span><span><span class="constructor">Trec_first</span></span></code></li><li id="type-rec_status.Trec_next" class="def variant constructor anchored"><a href="#type-rec_status.Trec_next" class="anchor"></a><code><span>| </span><span><span class="constructor">Trec_next</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ext_status"><a href="#type-ext_status" class="anchor"></a><code><span><span class="keyword">and</span> ext_status</span><span> = </span></code><ol><li id="type-ext_status.Text_first" class="def variant constructor anchored"><a href="#type-ext_status.Text_first" class="anchor"></a><code><span>| </span><span><span class="constructor">Text_first</span></span></code></li><li id="type-ext_status.Text_next" class="def variant constructor anchored"><a href="#type-ext_status.Text_next" class="anchor"></a><code><span>| </span><span><span class="constructor">Text_next</span></span></code></li><li id="type-ext_status.Text_exception" class="def variant constructor anchored"><a href="#type-ext_status.Text_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Text_exception</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-item_visibility"><a href="#val-item_visibility" class="anchor"></a><code><span><span class="keyword">val</span> item_visibility : <span><a href="#type-signature_item">signature_item</a> <span class="arrow">-></span></span> <a href="#type-visibility">visibility</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_description"><a href="#type-constructor_description" class="anchor"></a><code><span><span class="keyword">type</span> constructor_description</span><span> = </span><span>{</span></code><ol><li id="type-constructor_description.cstr_name" class="def record field anchored"><a href="#type-constructor_description.cstr_name" class="anchor"></a><code><span>cstr_name : string;</span></code></li><li id="type-constructor_description.cstr_res" class="def record field anchored"><a href="#type-constructor_description.cstr_res" class="anchor"></a><code><span>cstr_res : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-constructor_description.cstr_existentials" class="def record field anchored"><a href="#type-constructor_description.cstr_existentials" class="anchor"></a><code><span>cstr_existentials : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-constructor_description.cstr_args" class="def record field anchored"><a href="#type-constructor_description.cstr_args" class="anchor"></a><code><span>cstr_args : <span><a href="#type-type_expr">type_expr</a> list</span>;</span></code></li><li id="type-constructor_description.cstr_arity" class="def record field anchored"><a href="#type-constructor_description.cstr_arity" class="anchor"></a><code><span>cstr_arity : int;</span></code></li><li id="type-constructor_description.cstr_tag" class="def record field anchored"><a href="#type-constructor_description.cstr_tag" class="anchor"></a><code><span>cstr_tag : <a href="#type-constructor_tag">constructor_tag</a>;</span></code></li><li id="type-constructor_description.cstr_consts" class="def record field anchored"><a href="#type-constructor_description.cstr_consts" class="anchor"></a><code><span>cstr_consts : int;</span></code></li><li id="type-constructor_description.cstr_nonconsts" class="def record field anchored"><a href="#type-constructor_description.cstr_nonconsts" class="anchor"></a><code><span>cstr_nonconsts : int;</span></code></li><li id="type-constructor_description.cstr_generalized" class="def record field anchored"><a href="#type-constructor_description.cstr_generalized" class="anchor"></a><code><span>cstr_generalized : bool;</span></code></li><li id="type-constructor_description.cstr_private" class="def record field anchored"><a href="#type-constructor_description.cstr_private" class="anchor"></a><code><span>cstr_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>;</span></code></li><li id="type-constructor_description.cstr_loc" class="def record field anchored"><a href="#type-constructor_description.cstr_loc" class="anchor"></a><code><span>cstr_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-constructor_description.cstr_attributes" class="def record field anchored"><a href="#type-constructor_description.cstr_attributes" class="anchor"></a><code><span>cstr_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-constructor_description.cstr_inlined" class="def record field anchored"><a href="#type-constructor_description.cstr_inlined" class="anchor"></a><code><span>cstr_inlined : <span><a href="#type-type_declaration">type_declaration</a> option</span>;</span></code></li><li id="type-constructor_description.cstr_uid" class="def record field anchored"><a href="#type-constructor_description.cstr_uid" class="anchor"></a><code><span>cstr_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_tag"><a href="#type-constructor_tag" class="anchor"></a><code><span><span class="keyword">and</span> constructor_tag</span><span> = </span></code><ol><li id="type-constructor_tag.Cstr_constant" class="def variant constructor anchored"><a href="#type-constructor_tag.Cstr_constant" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_constant</span> <span class="keyword">of</span> int</span></code></li><li id="type-constructor_tag.Cstr_block" class="def variant constructor anchored"><a href="#type-constructor_tag.Cstr_block" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_block</span> <span class="keyword">of</span> int</span></code></li><li id="type-constructor_tag.Cstr_unboxed" class="def variant constructor anchored"><a href="#type-constructor_tag.Cstr_unboxed" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_unboxed</span></span></code></li><li id="type-constructor_tag.Cstr_extension" class="def variant constructor anchored"><a href="#type-constructor_tag.Cstr_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstr_extension</span> <span class="keyword">of</span> <a href="../Path/index.html#type-t">Path.t</a> * bool</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal_tag"><a href="#val-equal_tag" class="anchor"></a><code><span><span class="keyword">val</span> equal_tag : <span><a href="#type-constructor_tag">constructor_tag</a> <span class="arrow">-></span></span> <span><a href="#type-constructor_tag">constructor_tag</a> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-may_equal_constr"><a href="#val-may_equal_constr" class="anchor"></a><code><span><span class="keyword">val</span> may_equal_constr :
|
||
<span><a href="#type-constructor_description">constructor_description</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-constructor_description">constructor_description</a> <span class="arrow">-></span></span>
|
||
bool</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label_description"><a href="#type-label_description" class="anchor"></a><code><span><span class="keyword">type</span> label_description</span><span> = </span><span>{</span></code><ol><li id="type-label_description.lbl_name" class="def record field anchored"><a href="#type-label_description.lbl_name" class="anchor"></a><code><span>lbl_name : string;</span></code></li><li id="type-label_description.lbl_res" class="def record field anchored"><a href="#type-label_description.lbl_res" class="anchor"></a><code><span>lbl_res : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-label_description.lbl_arg" class="def record field anchored"><a href="#type-label_description.lbl_arg" class="anchor"></a><code><span>lbl_arg : <a href="#type-type_expr">type_expr</a>;</span></code></li><li id="type-label_description.lbl_mut" class="def record field anchored"><a href="#type-label_description.lbl_mut" class="anchor"></a><code><span>lbl_mut : <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a>;</span></code></li><li id="type-label_description.lbl_pos" class="def record field anchored"><a href="#type-label_description.lbl_pos" class="anchor"></a><code><span>lbl_pos : int;</span></code></li><li id="type-label_description.lbl_all" class="def record field anchored"><a href="#type-label_description.lbl_all" class="anchor"></a><code><span>lbl_all : <span><a href="#type-label_description">label_description</a> array</span>;</span></code></li><li id="type-label_description.lbl_repres" class="def record field anchored"><a href="#type-label_description.lbl_repres" class="anchor"></a><code><span>lbl_repres : <a href="#type-record_representation">record_representation</a>;</span></code></li><li id="type-label_description.lbl_private" class="def record field anchored"><a href="#type-label_description.lbl_private" class="anchor"></a><code><span>lbl_private : <a href="../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a>;</span></code></li><li id="type-label_description.lbl_loc" class="def record field anchored"><a href="#type-label_description.lbl_loc" class="anchor"></a><code><span>lbl_loc : <a href="../Location/index.html#type-t">Location.t</a>;</span></code></li><li id="type-label_description.lbl_attributes" class="def record field anchored"><a href="#type-label_description.lbl_attributes" class="anchor"></a><code><span>lbl_attributes : <a href="../Parsetree/index.html#type-attributes">Parsetree.attributes</a>;</span></code></li><li id="type-label_description.lbl_uid" class="def record field anchored"><a href="#type-label_description.lbl_uid" class="anchor"></a><code><span>lbl_uid : <a href="../Shape/Uid/index.html#type-t">Uid.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bound_value_identifiers"><a href="#val-bound_value_identifiers" class="anchor"></a><code><span><span class="keyword">val</span> bound_value_identifiers : <span><a href="#type-signature">signature</a> <span class="arrow">-></span></span> <span><a href="../Ident/index.html#type-t">Ident.t</a> list</span></span></code></div><div class="spec-doc"><p>Extracts the list of "value" identifiers bound by a signature. "Value" identifiers are identifiers for signature components that correspond to a run-time value: values, extensions, modules, classes. Note: manifest primitives do not correspond to a run-time value!</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-signature_item_id"><a href="#val-signature_item_id" class="anchor"></a><code><span><span class="keyword">val</span> signature_item_id : <span><a href="#type-signature_item">signature_item</a> <span class="arrow">-></span></span> <a href="../Ident/index.html#type-t">Ident.t</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-snapshot"><a href="#type-snapshot" class="anchor"></a><code><span><span class="keyword">type</span> snapshot</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-snapshot"><a href="#val-snapshot" class="anchor"></a><code><span><span class="keyword">val</span> snapshot : <span>unit <span class="arrow">-></span></span> <a href="#type-snapshot">snapshot</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-backtrack"><a href="#val-backtrack" class="anchor"></a><code><span><span class="keyword">val</span> backtrack : <span><span class="label">cleanup_abbrev</span>:<span>(<span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-snapshot">snapshot</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-undo_first_change_after"><a href="#val-undo_first_change_after" class="anchor"></a><code><span><span class="keyword">val</span> undo_first_change_after : <span><a href="#type-snapshot">snapshot</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-undo_compress"><a href="#val-undo_compress" class="anchor"></a><code><span><span class="keyword">val</span> undo_compress : <span><a href="#type-snapshot">snapshot</a> <span class="arrow">-></span></span> unit</span></code></div></div><p>Functions to use when modifying a type (only Ctype?). The old values are logged and reverted on backtracking.</p><div class="odoc-spec"><div class="spec value anchored" id="val-link_type"><a href="#val-link_type" class="anchor"></a><code><span><span class="keyword">val</span> link_type : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_type_desc"><a href="#val-set_type_desc" class="anchor"></a><code><span><span class="keyword">val</span> set_type_desc : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span><a href="#type-type_desc">type_desc</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_level"><a href="#val-set_level" class="anchor"></a><code><span><span class="keyword">val</span> set_level : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_scope"><a href="#val-set_scope" class="anchor"></a><code><span><span class="keyword">val</span> set_scope : <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_name"><a href="#val-set_name" class="anchor"></a><code><span><span class="keyword">val</span> set_name :
|
||
<span><span><span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span> <a href="../Stdlib/index.html#type-ref">ref</a></span> <span class="arrow">-></span></span>
|
||
<span><span><span>(<a href="../Path/index.html#type-t">Path.t</a> * <span><a href="#type-type_expr">type_expr</a> list</span>)</span> option</span> <span class="arrow">-></span></span>
|
||
unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-link_row_field_ext"><a href="#val-link_row_field_ext" class="anchor"></a><code><span><span class="keyword">val</span> link_row_field_ext : <span><span class="label">inside</span>:<a href="#type-row_field">row_field</a> <span class="arrow">-></span></span> <span><a href="#type-row_field">row_field</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_univar"><a href="#val-set_univar" class="anchor"></a><code><span><span class="keyword">val</span> set_univar : <span><span><span><a href="#type-type_expr">type_expr</a> option</span> <a href="../Stdlib/index.html#type-ref">ref</a></span> <span class="arrow">-></span></span> <span><a href="#type-type_expr">type_expr</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-link_kind"><a href="#val-link_kind" class="anchor"></a><code><span><span class="keyword">val</span> link_kind : <span><span class="label">inside</span>:<a href="#type-field_kind">field_kind</a> <span class="arrow">-></span></span> <span><a href="#type-field_kind">field_kind</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-link_commu"><a href="#val-link_commu" class="anchor"></a><code><span><span class="keyword">val</span> link_commu : <span><span class="label">inside</span>:<a href="#type-commutable">commutable</a> <span class="arrow">-></span></span> <span><a href="#type-commutable">commutable</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_commu_ok"><a href="#val-set_commu_ok" class="anchor"></a><code><span><span class="keyword">val</span> set_commu_ok : <span><a href="#type-commutable">commutable</a> <span class="arrow">-></span></span> unit</span></code></div></div></div></body></html>
|