mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
11 lines
No EOL
9.8 KiB
HTML
11 lines
No EOL
9.8 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCZipper (containers.data.CCZipper)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCZipper</span></h1></header><h2>List Zipper</h2><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> list<span class="keyword"> * </span><span class="type-var">'a</span> list</code><code></code></div><div class="doc"><p>The pair <code class="code">l, r</code> represents the list <code class="code">List.rev_append l r</code>, but
|
|
with the focus on <code class="code">r</code>.</p></div></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Empty zipper.</p></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>Empty zipper? Returns true iff the two lists are empty.</p></div></div><div class="spec val" id="val-to_list"><a href="#val-to_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Convert the zipper back to a list.
|
|
<code class="code">to_list (l,r)</code> is <code class="code">List.rev_append l r</code>.</p></div></div><div class="spec val" id="val-to_rev_list"><a href="#val-to_rev_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_rev_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Convert the zipper back to a <i>reversed</i> list.
|
|
In other words, <code class="code">to_list (l,r)</code> is <code class="code">List.rev_append r l</code>.</p></div></div><div class="spec val" id="val-make"><a href="#val-make" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make : <span class="type-var">'a</span> list <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a zipper pointing at the first element of the list.</p></div></div><div class="spec val" id="val-left"><a href="#val-left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>left : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Go to the left, or do nothing if the zipper is already at leftmost pos.</p></div></div><div class="spec val" id="val-left_exn"><a href="#val-left_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>left_exn : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Go to the left, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the zipper is already at leftmost pos.</li></ul></div></div><div class="spec val" id="val-right"><a href="#val-right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>right : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Go to the right, or do nothing if the zipper is already at rightmost pos.</p></div></div><div class="spec val" id="val-right_exn"><a href="#val-right_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>right_exn : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Go to the right, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the zipper is already at rightmost pos.</li></ul></div></div><div class="spec val" id="val-modify"><a href="#val-modify" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>modify : (<span class="type-var">'a</span> option <span class="keyword">‑></span> <span class="type-var">'a</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Modify the current element, if any, by returning a new element, or
|
|
returning <code class="code">None</code> if the element is to be deleted.</p></div></div><div class="spec val" id="val-insert"><a href="#val-insert" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>insert : <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Insert an element at the current position. If an element was focused,
|
|
<code class="code">insert x l</code> adds <code class="code">x</code> just before it, and focuses on <code class="code">x</code>.</p></div></div><div class="spec val" id="val-remove"><a href="#val-remove" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">remove l</code> removes the current element, if any.</p></div></div><div class="spec val" id="val-is_focused"><a href="#val-is_focused" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_focused : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>Is the zipper focused on some element? That is, will <a href="index.html#val-focused">focused</a>
|
|
return a <code class="code">Some v</code>?</p></div></div><div class="spec val" id="val-focused"><a href="#val-focused" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>focused : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Return the focused element, if any. <code class="code">focused zip = Some _</code> iff
|
|
<code class="code">empty zip = false</code>.</p></div></div><div class="spec val" id="val-focused_exn"><a href="#val-focused_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>focused_exn : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Return the focused element, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the zipper is at an end.</li></ul></div></div><div class="spec val" id="val-drop_before"><a href="#val-drop_before" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>drop_before : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Drop every element on the "left" (calling <a href="index.html#val-left">left</a> then will do nothing).</p></div></div><div class="spec val" id="val-drop_after"><a href="#val-drop_after" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>drop_after : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Drop every element on the "right" (calling <a href="index.html#val-right">right</a> then will do nothing),
|
|
keeping the focused element, if any.</p></div></div><div class="spec val" id="val-drop_after_and_focused"><a href="#val-drop_after_and_focused" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>drop_after_and_focused : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Drop every element on the "right" (calling <a href="index.html#val-right">right</a> then will do nothing),
|
|
<i>including</i> the focused element if it is present.</p></div></div></body></html> |