ocaml-containers/dev/containers-data/CCZipper/index.html
2022-07-06 20:46:13 +00:00

2 lines
No EOL
11 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>CCZipper (containers-data.CCZipper)</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">containers-data</a> &#x00BB; CCZipper</nav><header class="odoc-preamble"><h1>Module <code><span>CCZipper</span></code></h1><p>List Zipper</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.0</li></ul></header><div class="odoc-content"><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> <span>'a t</span></span><span> = <span><span class="type-var">'a</span> list</span> * <span><span class="type-var">'a</span> list</span></span></code></div><div class="spec-doc"><p>The pair <code>l, r</code> represents the list <code>List.rev_append l r</code>, but with the focus on <code>r</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-empty" class="anchored"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Empty zipper.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-is_empty" class="anchored"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span><span><span class="type-var">_</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Empty zipper? Returns <code>true</code> iff the two lists are empty.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_list" class="anchored"><a href="#val-to_list" class="anchor"></a><code><span><span class="keyword">val</span> to_list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> list</span></span></code></div><div class="spec-doc"><p>Convert the zipper back to a list. <code>to_list (l,r)</code> is <code>List.rev_append l r</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_rev_list" class="anchored"><a href="#val-to_rev_list" class="anchor"></a><code><span><span class="keyword">val</span> to_rev_list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> list</span></span></code></div><div class="spec-doc"><p>Convert the zipper back to a <i>reversed</i> list. In other words, <code>to_list (l,r)</code> is <code>List.rev_append r l</code>.</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><span><span class="type-var">'a</span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Create a zipper pointing at the first element of the list.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-left" class="anchored"><a href="#val-left" class="anchor"></a><code><span><span class="keyword">val</span> left : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Go to the left, or do nothing if the zipper is already at leftmost pos.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-left_exn" class="anchored"><a href="#val-left_exn" class="anchor"></a><code><span><span class="keyword">val</span> left_exn : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Go to the left, or</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the zipper is already at leftmost pos.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-right" class="anchored"><a href="#val-right" class="anchor"></a><code><span><span class="keyword">val</span> right : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Go to the right, or do nothing if the zipper is already at rightmost pos.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-right_exn" class="anchored"><a href="#val-right_exn" class="anchor"></a><code><span><span class="keyword">val</span> right_exn : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Go to the right, or</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the zipper is already at rightmost pos.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-modify" class="anchored"><a href="#val-modify" class="anchor"></a><code><span><span class="keyword">val</span> modify : <span><span>( <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Modify the current element, if any, by returning a new element, or returning <code>None</code> if the element is to be deleted.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-insert" class="anchored"><a href="#val-insert" class="anchor"></a><code><span><span class="keyword">val</span> insert : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Insert an element at the current position. If an element was focused, <code>insert x l</code> adds <code>x</code> just before it, and focuses on <code>x</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-remove" class="anchored"><a href="#val-remove" class="anchor"></a><code><span><span class="keyword">val</span> remove : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>remove l</code> removes the current element, if any.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-is_focused" class="anchored"><a href="#val-is_focused" class="anchor"></a><code><span><span class="keyword">val</span> is_focused : <span><span><span class="type-var">_</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Is the zipper focused on some element? That is, will <a href="#val-focused"><code>focused</code></a> return a <code>Some v</code>?</p></div></div><div class="odoc-spec"><div class="spec value" id="val-focused" class="anchored"><a href="#val-focused" class="anchor"></a><code><span><span class="keyword">val</span> focused : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p>Return the focused element, if any. <code>focused zip = Some _</code> iff <code>empty zip = false</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-focused_exn" class="anchored"><a href="#val-focused_exn" class="anchor"></a><code><span><span class="keyword">val</span> focused_exn : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Return the focused element, or</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Not_found</span> <p>if the zipper is at an end.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-drop_before" class="anchored"><a href="#val-drop_before" class="anchor"></a><code><span><span class="keyword">val</span> drop_before : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Drop every element on the &quot;left&quot; (calling <a href="#val-left"><code>left</code></a> then will do nothing).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-drop_after" class="anchored"><a href="#val-drop_after" class="anchor"></a><code><span><span class="keyword">val</span> drop_after : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Drop every element on the &quot;right&quot; (calling <a href="#val-right"><code>right</code></a> then will do nothing), keeping the focused element, if any.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-drop_after_and_focused" class="anchored"><a href="#val-drop_after_and_focused" class="anchor"></a><code><span><span class="keyword">val</span> drop_after_and_focused : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Drop every element on the &quot;right&quot; (calling <a href="#val-right"><code>right</code></a> then will do nothing), <i>including</i> the focused element if it is present.</p></div></div></div></body></html>