mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
13 lines
No EOL
5.6 KiB
HTML
13 lines
No EOL
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Infix (containers.CCParse.Infix)</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</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCParse.Infix</span></h1></header><div class="spec val" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </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> <span class="keyword">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-t">t</a></code></div><div class="doc"><p>Map.</p></div></div><div class="spec val" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </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> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-t">t</a></code></div><div class="doc"><p>Monadic bind.
|
|
<code class="code">p >>= f</code> results in a new parser which behaves as <code class="code">p</code> then,
|
|
in case of success, applies <code class="code">f</code> to the result.</p></div></div><div class="spec val" id="val-(<*>)"><a href="#val-(<*>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(<*>) : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</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> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-t">t</a></code></div><div class="doc"><p>Applicative.</p></div></div><div class="spec val" id="val-(<*)"><a href="#val-(<*)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(<*) : <span class="type-var">'a</span> <a href="../index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">_</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">a <* b</code> parses <code class="code">a</code> into <code class="code">x</code>, parses <code class="code">b</code> and ignores its result,
|
|
and returns <code class="code">x</code>.</p></div></div><div class="spec val" id="val-(*>)"><a href="#val-(*>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(*>) : <span class="type-var">_</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> <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">a *> b</code> parses <code class="code">a</code>, then parses <code class="code">b</code> into <code class="code">x</code>, and returns <code class="code">x</code>. The
|
|
results of <code class="code">a</code> is ignored.</p></div></div><div class="spec val" id="val-(<|>)"><a href="#val-(<|>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </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> <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">a <|> b</code> tries to parse <code class="code">a</code>, and if <code class="code">a</code> fails without
|
|
consuming any input, backtracks and tries
|
|
to parse <code class="code">b</code>, otherwise it fails as <code class="code">a</code>.
|
|
See <a href="../index.html#val-try_">try_</a> to ensure <code class="code">a</code> does not consume anything (but it is best
|
|
to avoid wrapping large parsers with <a href="../index.html#val-try_">try_</a>).</p></div></div><div class="spec val" id="val-(<?>)"><a href="#val-(<?>)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(<?>) : <span class="type-var">'a</span> <a href="../index.html#type-t">t</a> <span class="keyword">‑></span> string <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">a <?> msg</code> behaves like <code class="code">a</code>, but if <code class="code">a</code> fails without
|
|
consuming any input, it fails with <code class="code">msg</code>
|
|
instead. Useful as the last choice in a series of <code class="code"><|></code>:
|
|
<code class="code">a <|> b <|> c <?> "expected a|b|c"</code>.</p></div></div></body></html> |