nanoev/hmap/Hmap/index.html
2025-05-05 14:16:16 +00:00

2 lines
13 KiB
HTML
Raw Permalink 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>Hmap (hmap.Hmap)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.0.0"/><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">Index</a> &#x00BB; <a href="../index.html">hmap</a> &#x00BB; Hmap</nav><header class="odoc-preamble"><h1>Module <code><span>Hmap</span></code></h1><p>Heterogeneous value maps.</p><p><em>v0.8.1 - <a href="http://erratique.ch/software/hmap">homepage</a></em></p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#keys">Keys</a></li><li><a href="#maps">Maps</a></li><li><a href="#func">Functorial interface</a></li></ul></nav></div><div class="odoc-content"><h2 id="keys"><a href="#keys" class="anchor"></a>Keys</h2><div class="odoc-spec"><div class="spec type anchored" id="type-key"><a href="#type-key" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a key</span></span></code></div><div class="spec-doc"><p>The type for keys whose lookup value is of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Key"><a href="#module-Key" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Key/index.html">Key</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Keys.</p></div></div><h2 id="maps"><a href="#maps" class="anchor"></a>Maps</h2><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></code></div><div class="spec-doc"><p>The type for heterogeneous value maps.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>empty</code> is the empty map.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>is_empty m</code> is <code>true</code> iff <code>m</code> is empty.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span><span class="keyword">val</span> mem : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>mem k m</code> is <code>true</code> iff <code>k</code> is bound in <code>m</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add"><a href="#val-add" class="anchor"></a><code><span><span class="keyword">val</span> add : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>add k v m</code> is <code>m</code> with <code>k</code> bound to <code>v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-singleton"><a href="#val-singleton" class="anchor"></a><code><span><span class="keyword">val</span> singleton : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>singleton k v</code> is <code>add k v empty</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rem"><a href="#val-rem" class="anchor"></a><code><span><span class="keyword">val</span> rem : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>rem k m</code> is <code>m</code> with <code>k</code> unbound.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find"><a href="#val-find" class="anchor"></a><code><span><span class="keyword">val</span> find : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p><code>find k m</code> is the value of <code>k</code>'s binding in <code>m</code>, if any.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>get k m</code> is the value of <code>k</code>'s binding in <code>m</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if <code>k</code> is not bound in <code>m</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-binding"><a href="#type-binding" class="anchor"></a><code><span><span class="keyword">type</span> binding</span><span> = </span></code><ol><li id="type-binding.B" class="def variant constructor anchored"><a href="#type-binding.B" class="anchor"></a><code><span>| </span><span><span class="constructor">B</span> : <span><span class="type-var">'a</span> <a href="#type-key">key</a></span> * <span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span> <a href="#type-binding">binding</a></span></code></li></ol></div><div class="spec-doc"><p>The type for bindings.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span><span class="keyword">val</span> iter : <span><span>(<span><a href="#type-binding">binding</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>iter f m</code> applies <code>f</code> to all bindings of <code>m</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span><span class="keyword">val</span> fold : <span><span>(<span><a href="#type-binding">binding</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fold f m acc</code> folds over the bindings of <code>m</code> with <code>f</code>, starting with <code>acc</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-for_all"><a href="#val-for_all" class="anchor"></a><code><span><span class="keyword">val</span> for_all : <span><span>(<span><a href="#type-binding">binding</a> <span class="arrow">&#45;&gt;</span></span> bool)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>for_all p m</code> is <code>true</code> iff all bindings of <code>m</code> satisfy <code>p</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exists"><a href="#val-exists" class="anchor"></a><code><span><span class="keyword">val</span> exists : <span><span>(<span><a href="#type-binding">binding</a> <span class="arrow">&#45;&gt;</span></span> bool)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>exists p m</code> is <code>true</code> iff there exists a bindings of <code>m</code> that satisfies <code>p</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span><span class="keyword">val</span> filter : <span><span>(<span><a href="#type-binding">binding</a> <span class="arrow">&#45;&gt;</span></span> bool)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>filter p m</code> are the bindings of <code>m</code> that satisfy <code>p</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cardinal"><a href="#val-cardinal" class="anchor"></a><code><span><span class="keyword">val</span> cardinal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>cardinal m</code> is the number of bindings in <code>m</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-any_binding"><a href="#val-any_binding" class="anchor"></a><code><span><span class="keyword">val</span> any_binding : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-binding">binding</a> option</span></span></code></div><div class="spec-doc"><p><code>any_binding m</code> is a binding of <code>m</code> (if not empty).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_any_binding"><a href="#val-get_any_binding" class="anchor"></a><code><span><span class="keyword">val</span> get_any_binding : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-binding">binding</a></span></code></div><div class="spec-doc"><p><code>get_any_binding m</code> is a binding of <code>m</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if <code>m</code> is empty.</p></li></ul></div></div><h2 id="func"><a href="#func" class="anchor"></a>Functorial interface</h2><p>The functorial interface allows to associate more information to the keys. For example a key name or a key value pretty-printer.</p><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-KEY_INFO"><a href="#module-type-KEY_INFO" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-KEY_INFO/index.html">KEY_INFO</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The type for key information.</p></div></div><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Output signature of the functor <a href="Make/index.html"><code>Make</code></a></p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Make"><a href="#module-Make" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Make/index.html">Make</a></span><span> (<a href="Make/argument-1-Key_info/index.html">Key_info</a> : <a href="module-type-KEY_INFO/index.html">KEY_INFO</a>) : <a href="module-type-S/index.html">S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <span>'a <a href="module-type-S/Key/index.html#type-info">Key.info</a></span> = <span><span class="type-var">'a</span> <a href="Make/argument-1-Key_info/index.html#type-t">Key_info.t</a></span></span></span></code></div><div class="spec-doc"><p>Functor for heterogeneous maps whose keys hold information of type <code>Key_info.t</code></p></div></div></div></body></html>