summaryrefslogtreecommitdiff
path: root/devdocs/elisp/extending-pcase.html
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-08-14 22:58:58 -0500
committerCraig Jennings <c@cjennings.net>2025-08-14 22:58:58 -0500
commit82ba818ff456bcd6d56a06226e3f27e98fbb55c3 (patch)
tree158cfc17b2f644a10f063cb546752cfaae12c97f /devdocs/elisp/extending-pcase.html
parent9278ddd4ea1a8b1a4c1edaa8894516e3f48d245b (diff)
downloaddotemacs-82ba818ff456bcd6d56a06226e3f27e98fbb55c3.tar.gz
dotemacs-82ba818ff456bcd6d56a06226e3f27e98fbb55c3.zip
removing all downloaded devdocs files
Diffstat (limited to 'devdocs/elisp/extending-pcase.html')
-rw-r--r--devdocs/elisp/extending-pcase.html20
1 files changed, 0 insertions, 20 deletions
diff --git a/devdocs/elisp/extending-pcase.html b/devdocs/elisp/extending-pcase.html
deleted file mode 100644
index 0b2e06fc..00000000
--- a/devdocs/elisp/extending-pcase.html
+++ /dev/null
@@ -1,20 +0,0 @@
- <h4 class="subsection">Extending pcase</h4> <p>The <code>pcase</code> macro supports several kinds of patterns (see <a href="pattern_002dmatching-conditional">Pattern-Matching Conditional</a>). You can add support for other kinds of patterns using the <code>pcase-defmacro</code> macro. </p> <dl> <dt id="pcase-defmacro">Macro: <strong>pcase-defmacro</strong> <em>name args [doc] &amp;rest body</em>
-</dt> <dd>
-<p>Define a new kind of pattern for <code>pcase</code>, to be invoked as <code>(<var>name</var> <var><span class="nolinebreak">actual-args</span></var>)</code>. The <code>pcase</code> macro expands this into a function call that evaluates <var>body</var>, whose job it is to rewrite the invoked pattern into some other pattern, in an environment where <var>args</var> are bound to <var>actual-args</var>. </p> <p>Additionally, arrange to display <var>doc</var> along with the docstring of <code>pcase</code>. By convention, <var>doc</var> should use <code>EXPVAL</code> to stand for the result of evaluating <var>expression</var> (first arg to <code>pcase</code>). </p>
-</dd>
-</dl> <p>Typically, <var>body</var> rewrites the invoked pattern to use more basic patterns. Although all patterns eventually reduce to core patterns, <code>body</code> need not use core patterns straight away. The following example defines two patterns, named <code>less-than</code> and <code>integer-less-than</code>. </p> <div class="example"> <pre class="example">(pcase-defmacro less-than (n)
- "Matches if EXPVAL is a number less than N."
- `(pred (&gt; ,n)))
-</pre>
-
-<pre class="example">(pcase-defmacro integer-less-than (n)
- "Matches if EXPVAL is an integer less than N."
- `(and (pred integerp)
- (less-than ,n)))
-</pre>
-</div> <p>Note that the docstrings mention <var>args</var> (in this case, only one: <code>n</code>) in the usual way, and also mention <code>EXPVAL</code> by convention. The first rewrite (i.e., <var>body</var> for <code>less-than</code>) uses one core pattern: <code>pred</code>. The second uses two core patterns: <code>and</code> and <code>pred</code>, as well as the newly-defined pattern <code>less-than</code>. Both use a single backquote construct (see <a href="backquote">Backquote</a>). </p><div class="_attribution">
- <p class="_attribution-p">
- Copyright &copy; 1990-1996, 1998-2022 Free Software Foundation, Inc. <br>Licensed under the GNU GPL license.<br>
- <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Extending-pcase.html" class="_attribution-link">https://www.gnu.org/software/emacs/manual/html_node/elisp/Extending-pcase.html</a>
- </p>
-</div>