aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2018-10-30 14:24:31 -0400
committerStefan Monnier2018-10-30 14:24:31 -0400
commiteb903d8f20ab0c31daa27a08b0acfd30115c7b5e (patch)
tree72ef22d00690e7984c735fecd12e959d9a91e9c0
parent86abbb3cb8490f73eb00023cf1c9ea7b5a8fffaf (diff)
downloademacs-eb903d8f20ab0c31daa27a08b0acfd30115c7b5e.tar.gz
emacs-eb903d8f20ab0c31daa27a08b0acfd30115c7b5e.zip
* lisp/emacs-lisp/pcase.el: Improve docstrings.
-rw-r--r--lisp/emacs-lisp/pcase.el18
1 files changed, 12 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index fa7b1de8b4d..2e89ae0779a 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -266,7 +266,8 @@ variable name being but a special case of it)."
266(defmacro pcase-let* (bindings &rest body) 266(defmacro pcase-let* (bindings &rest body)
267 "Like `let*' but where you can use `pcase' patterns for bindings. 267 "Like `let*' but where you can use `pcase' patterns for bindings.
268BODY should be an expression, and BINDINGS should be a list of bindings 268BODY should be an expression, and BINDINGS should be a list of bindings
269of the form (PAT EXP)." 269of the form (PATTERN EXP).
270See `pcase-let' for discussion of how PATTERN is matched."
270 (declare (indent 1) 271 (declare (indent 1)
271 (debug ((&rest (pcase-PAT &optional form)) body))) 272 (debug ((&rest (pcase-PAT &optional form)) body)))
272 (let ((cached (gethash bindings pcase--memoize))) 273 (let ((cached (gethash bindings pcase--memoize)))
@@ -281,10 +282,11 @@ of the form (PAT EXP)."
281(defmacro pcase-let (bindings &rest body) 282(defmacro pcase-let (bindings &rest body)
282 "Like `let' but where you can use `pcase' patterns for bindings. 283 "Like `let' but where you can use `pcase' patterns for bindings.
283BODY should be a list of expressions, and BINDINGS should be a list of bindings 284BODY should be a list of expressions, and BINDINGS should be a list of bindings
284of the form (PAT EXP). 285of the form (PATTERN EXP).
285The macro is expanded and optimized under the assumption that those 286The PATTERNs are only used to extract data, so the code does not test
286patterns *will* match, so a mismatch may go undetected or may cause 287whether the data does match the corresponding patterns: a mismatch
287any kind of error." 288may signal an error or may go undetected, binding variables to arbitrary
289values, such as nil."
288 (declare (indent 1) (debug pcase-let*)) 290 (declare (indent 1) (debug pcase-let*))
289 (if (null (cdr bindings)) 291 (if (null (cdr bindings))
290 `(pcase-let* ,bindings ,@body) 292 `(pcase-let* ,bindings ,@body)
@@ -302,7 +304,11 @@ any kind of error."
302 304
303;;;###autoload 305;;;###autoload
304(defmacro pcase-dolist (spec &rest body) 306(defmacro pcase-dolist (spec &rest body)
305 "Like `dolist' but where the binding can be a `pcase' pattern. 307 "Superset of `dolist' where the VAR binding can be a `pcase' PATTERN.
308More specifically, this is just a shorthand for the following combination
309of `dolist' and `pcase-let':
310
311 (dolist (x LIST) (pcase-let ((PATTERN x)) BODY...))
306\n(fn (PATTERN LIST) BODY...)" 312\n(fn (PATTERN LIST) BODY...)"
307 (declare (indent 1) (debug ((pcase-PAT form) body))) 313 (declare (indent 1) (debug ((pcase-PAT form) body)))
308 (if (pcase--trivial-upat-p (car spec)) 314 (if (pcase--trivial-upat-p (car spec))