moonpool/dev/ocaml/Projection/index.html
2023-08-28 17:11:38 +00:00

8 lines
No EOL
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Projection (ocaml.Projection)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../index.html">ocaml</a> &#x00BB; Projection</nav><header class="odoc-preamble"><h1>Module <code><span>Projection</span></code></h1><p>Representation of projections from closures and blocks.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-project_closure"><a href="#type-project_closure" class="anchor"></a><code><span><span class="keyword">type</span> project_closure</span><span> = </span><span>{</span></code><ol><li id="type-project_closure.set_of_closures" class="def record field anchored"><a href="#type-project_closure.set_of_closures" class="anchor"></a><code><span>set_of_closures : <a href="../Variable/index.html#type-t">Variable.t</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>must yield a set of closures</p><span class="comment-delim">*)</span></div></li><li id="type-project_closure.closure_id" class="def record field anchored"><a href="#type-project_closure.closure_id" class="anchor"></a><code><span>closure_id : <a href="../Closure_id/index.html#type-t">Closure_id.t</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>The selection of one closure given a set of closures, required before a function defined by said set of closures can be applied. See more detailed documentation below on <code>set_of_closures</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-move_within_set_of_closures"><a href="#type-move_within_set_of_closures" class="anchor"></a><code><span><span class="keyword">type</span> move_within_set_of_closures</span><span> = </span><span>{</span></code><ol><li id="type-move_within_set_of_closures.closure" class="def record field anchored"><a href="#type-move_within_set_of_closures.closure" class="anchor"></a><code><span>closure : <a href="../Variable/index.html#type-t">Variable.t</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>must yield a closure</p><span class="comment-delim">*)</span></div></li><li id="type-move_within_set_of_closures.start_from" class="def record field anchored"><a href="#type-move_within_set_of_closures.start_from" class="anchor"></a><code><span>start_from : <a href="../Closure_id/index.html#type-t">Closure_id.t</a>;</span></code></li><li id="type-move_within_set_of_closures.move_to" class="def record field anchored"><a href="#type-move_within_set_of_closures.move_to" class="anchor"></a><code><span>move_to : <a href="../Closure_id/index.html#type-t">Closure_id.t</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>The selection of one closure given another closure in the same set of closures. See more detailed documentation below on <code>set_of_closures</code>. The <code>move_to</code> closure must be part of the free variables of <code>start_from</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-project_var"><a href="#type-project_var" class="anchor"></a><code><span><span class="keyword">type</span> project_var</span><span> = </span><span>{</span></code><ol><li id="type-project_var.closure" class="def record field anchored"><a href="#type-project_var.closure" class="anchor"></a><code><span>closure : <a href="../Variable/index.html#type-t">Variable.t</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>must yield a closure</p><span class="comment-delim">*)</span></div></li><li id="type-project_var.closure_id" class="def record field anchored"><a href="#type-project_var.closure_id" class="anchor"></a><code><span>closure_id : <a href="../Closure_id/index.html#type-t">Closure_id.t</a>;</span></code></li><li id="type-project_var.var" class="def record field anchored"><a href="#type-project_var.var" class="anchor"></a><code><span>var : <a href="../Var_within_closure/index.html#type-t">Var_within_closure.t</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>The selection from a closure of a variable bound by said closure. In other words, access to a function's environment. Also see more detailed documentation below on <code>set_of_closures</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_project_closure"><a href="#val-print_project_closure" class="anchor"></a><code><span><span class="keyword">val</span> print_project_closure : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-project_closure">project_closure</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_move_within_set_of_closures"><a href="#val-print_move_within_set_of_closures" class="anchor"></a><code><span><span class="keyword">val</span> print_move_within_set_of_closures :
<span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-move_within_set_of_closures">move_within_set_of_closures</a> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print_project_var"><a href="#val-print_project_var" class="anchor"></a><code><span><span class="keyword">val</span> print_project_var : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-project_var">project_var</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_project_var"><a href="#val-compare_project_var" class="anchor"></a><code><span><span class="keyword">val</span> compare_project_var : <span><a href="#type-project_var">project_var</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-project_var">project_var</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_project_closure"><a href="#val-compare_project_closure" class="anchor"></a><code><span><span class="keyword">val</span> compare_project_closure : <span><a href="#type-project_closure">project_closure</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-project_closure">project_closure</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_move_within_set_of_closures"><a href="#val-compare_move_within_set_of_closures" class="anchor"></a><code><span><span class="keyword">val</span> compare_move_within_set_of_closures :
<span><a href="#type-move_within_set_of_closures">move_within_set_of_closures</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-move_within_set_of_closures">move_within_set_of_closures</a> <span class="arrow">&#45;&gt;</span></span>
int</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span></code><ol><li id="type-t.Project_var" class="def variant constructor anchored"><a href="#type-t.Project_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Project_var</span> <span class="keyword">of</span> <a href="#type-project_var">project_var</a></span></code></li><li id="type-t.Project_closure" class="def variant constructor anchored"><a href="#type-t.Project_closure" class="anchor"></a><code><span>| </span><span><span class="constructor">Project_closure</span> <span class="keyword">of</span> <a href="#type-project_closure">project_closure</a></span></code></li><li id="type-t.Move_within_set_of_closures" class="def variant constructor anchored"><a href="#type-t.Move_within_set_of_closures" class="anchor"></a><code><span>| </span><span><span class="constructor">Move_within_set_of_closures</span> <span class="keyword">of</span> <a href="#type-move_within_set_of_closures">move_within_set_of_closures</a></span></code></li><li id="type-t.Field" class="def variant constructor anchored"><a href="#type-t.Field" class="anchor"></a><code><span>| </span><span><span class="constructor">Field</span> <span class="keyword">of</span> int * <a href="../Variable/index.html#type-t">Variable.t</a></span></code></li></ol></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../Identifiable/module-type-S/index.html">Identifiable.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Identifiable/module-type-S/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec module anchored" id="module-T"><a href="#module-T" class="anchor"></a><code><span><span class="keyword">module</span> <a href="T/index.html">T</a></span><span> : <a href="../Identifiable/module-type-Thing/index.html">Identifiable.Thing</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Identifiable/module-type-Thing/index.html#type-t">t</a> = <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../Identifiable/module-type-Thing/index.html">Identifiable.Thing</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Identifiable/module-type-Thing/index.html#type-t">t</a> := <a href="T/index.html#type-t">T.t</a></span></span></code></summary><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../Stdlib/Hashtbl/module-type-HashedType/index.html">Hashtbl.HashedType</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Hashtbl/module-type-HashedType/index.html#type-t">t</a> := <a href="T/index.html#type-t">T.t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>The equality predicate used to compare keys.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span><span class="keyword">val</span> hash : <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>A hashing function on keys. It must be such that if two keys are equal according to <code>equal</code>, then they have identical hash values as computed by <code>hash</code>. Examples: suitable (<code>equal</code>, <code>hash</code>) pairs for arbitrary key types include</p><ul><li>(<code>(=)</code>, <a href="#val-hash"><code>hash</code></a>) for comparing objects by structure (provided objects do not contain floats)</li><li>(<code>(fun x y -&gt; compare x y = 0)</code>, <a href="#val-hash"><code>hash</code></a>) for comparing objects by structure and handling <a href="../Stdlib/index.html#val-nan"><code>Stdlib.nan</code></a> correctly</li><li>(<code>(==)</code>, <a href="#val-hash"><code>hash</code></a>) for comparing objects by physical equality (e.g. for mutable or cyclic objects).</li></ul></div></div></details></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../Stdlib/Map/module-type-OrderedType/index.html">Map.OrderedType</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../Stdlib/Map/module-type-OrderedType/index.html#type-t">t</a> := <a href="T/index.html#type-t">T.t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>A total ordering function over the keys. This is a two-argument function <code>f</code> such that <code>f e1 e2</code> is zero if the keys <code>e1</code> and <code>e2</code> are equal, <code>f e1 e2</code> is strictly negative if <code>e1</code> is smaller than <code>e2</code>, and <code>f e1 e2</code> is strictly positive if <code>e1</code> is greater than <code>e2</code>. Example: a suitable ordering function is the generic structural comparison function <a href="../Stdlib/index.html#val-compare"><code>Stdlib.compare</code></a>.</p></div></div></details></div><div class="odoc-spec"><div class="spec value anchored" id="val-output"><a href="#val-output" class="anchor"></a><code><span><span class="keyword">val</span> output : <span><a href="../Stdlib/index.html#type-out_channel">out_channel</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print"><a href="#val-print" class="anchor"></a><code><span><span class="keyword">val</span> print : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="T/index.html#type-t">T.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div></details></div><div class="odoc-spec"><div class="spec module anchored" id="module-Set"><a href="#module-Set" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Set/index.html">Set</a></span><span> : <a href="../Identifiable/module-type-Set/index.html">Identifiable.Set</a> <span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../Identifiable/module-type-Set/T/index.html">T</a> := <a href="T/index.html">T</a></span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Map"><a href="#module-Map" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Map/index.html">Map</a></span><span> : <a href="../Identifiable/module-type-Map/index.html">Identifiable.Map</a> <span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../Identifiable/module-type-Map/T/index.html">T</a> := <a href="T/index.html">T</a></span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tbl"><a href="#module-Tbl" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Tbl/index.html">Tbl</a></span><span> : <a href="../Identifiable/module-type-Tbl/index.html">Identifiable.Tbl</a> <span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../Identifiable/module-type-Tbl/T/index.html">T</a> := <a href="T/index.html">T</a></span></span></code></div></div></details></div><div class="odoc-spec"><div class="spec value anchored" id="val-projecting_from"><a href="#val-projecting_from" class="anchor"></a><code><span><span class="keyword">val</span> projecting_from : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../Variable/index.html#type-t">Variable.t</a></span></code></div><div class="spec-doc"><p>Return which variable the given projection projects from.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map_projecting_from"><a href="#val-map_projecting_from" class="anchor"></a><code><span><span class="keyword">val</span> map_projecting_from : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>f:<span>(<span><a href="../Variable/index.html#type-t">Variable.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../Variable/index.html#type-t">Variable.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Change the variable that the given projection projects from.</p></div></div></div></body></html>