mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-07 03:35:38 -05:00
2 lines
No EOL
9.3 KiB
HTML
2 lines
No EOL
9.3 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ID (sidekick-base.Sidekick_base.ID)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.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">sidekick-base</a> » <a href="../index.html">Sidekick_base</a> » ID</nav><header class="odoc-preamble"><h1>Module <code><span>Sidekick_base.ID</span></code></h1><p>Unique Identifiers</p></header><div class="odoc-content"><p>We use generative identifiers everywhere in <code>Sidekick_base</code>. Unlike strings, there are no risk of collision: during parsing, a new declaration or definition should create a fresh <code>ID.t</code> and associate it with the string name, and later references should look into some hashtable or map to get the ID corresponding to a string.</p><p>This allows us to handle definition shadowing or binder shadowing easily.</p><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div><div class="spec-doc"><p>The opaque type of unique identifiers</p></div></div><div class="odoc-spec"><div class="spec value" id="val-make" class="anchored"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>make s</code> creates a new identifier with name <code>s</code> and some internal information. It is different than any other identifier created before or after, even with the same name.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-makef" class="anchored"><a href="#val-makef" class="anchor"></a><code><span><span class="keyword">val</span> makef : <span><span><span>( <span class="type-var">'a</span>, <span class="xref-unresolved">Stdlib</span>.Format.formatter, unit, <a href="#type-t">t</a> )</span> <span class="xref-unresolved">Stdlib</span>.format4</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>makef "foo %d bar %b" 42 true</code> is like <code>make (Format.asprintf "foo %d bar %b" 42 true)</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-copy" class="anchored"><a href="#val-copy" class="anchor"></a><code><span><span class="keyword">val</span> copy : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Fresh copy of the identifier, distinct from it, but with the same name.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-id" class="anchored"><a href="#val-id" class="anchor"></a><code><span><span class="keyword">val</span> id : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Unique integer counter for this identifier.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_string" class="anchored"><a href="#val-to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_string : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Print identifier.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_string_full" class="anchored"><a href="#val-to_string_full" class="anchor"></a><code><span><span class="keyword">val</span> to_string_full : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Printer name and unique counter for this ID.</p></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_sigs/module-type-EQ_ORD_HASH_PRINT/index.html">Sidekick_sigs.EQ_ORD_HASH_PRINT</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_sigs/module-type-EQ_ORD_HASH_PRINT/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_sigs/module-type-EQ/index.html">Sidekick_sigs.EQ</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_sigs/module-type-EQ/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-equal" class="anchored"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div></div></details></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_sigs/module-type-ORD/index.html">Sidekick_sigs.ORD</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_sigs/module-type-ORD/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-compare" class="anchored"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div></div></details></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_sigs/module-type-HASH/index.html">Sidekick_sigs.HASH</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_sigs/module-type-HASH/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-hash" class="anchored"><a href="#val-hash" class="anchor"></a><code><span><span class="keyword">val</span> hash : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div></div></details></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_sigs/module-type-PRINT/index.html">Sidekick_sigs.PRINT</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_sigs/module-type-PRINT/index.html#type-t">t</a> := <a href="#type-t">t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-pp" class="anchored"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><a href="#type-t">t</a> <a href="../../../sidekick/Sidekick_sigs/index.html#type-printer">Sidekick_sigs.printer</a></span></span></code></div></div></details></div></details></div><div class="odoc-spec"><div class="spec value" id="val-pp_name" class="anchored"><a href="#val-pp_name" class="anchor"></a><code><span><span class="keyword">val</span> pp_name : <span><a href="#type-t">t</a> <span class="xref-unresolved">CCFormat</span>.printer</span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-pp_full" class="anchored"><a href="#val-pp_full" class="anchor"></a><code><span><span class="keyword">val</span> pp_full : <span><a href="#type-t">t</a> <span class="xref-unresolved">CCFormat</span>.printer</span></span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-Map" class="anchored"><a href="#module-Map" class="anchor"></a><code><span><span class="keyword">module</span> Map</span><span> : <span class="xref-unresolved">CCMap</span>.S <span class="keyword">with</span> <span><span class="keyword">type</span> <span class="xref-unresolved">key</span> = <span class="xref-unresolved">t</span></span></span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-Set" class="anchored"><a href="#module-Set" class="anchor"></a><code><span><span class="keyword">module</span> Set</span><span> : <span class="xref-unresolved">CCSet</span>.S <span class="keyword">with</span> <span><span class="keyword">type</span> <span class="xref-unresolved">elt</span> = <span class="xref-unresolved">t</span></span></span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-Tbl" class="anchored"><a href="#module-Tbl" class="anchor"></a><code><span><span class="keyword">module</span> Tbl</span><span> : <span class="xref-unresolved">CCHashtbl</span>.S <span class="keyword">with</span> <span><span class="keyword">type</span> <span class="xref-unresolved">key</span> = <span class="xref-unresolved">t</span></span></span></code></div></div></div></body></html> |