[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24362: 25.1.50; Inconsistent docstring between pcase-let and pcase-l
From: |
Robert Cochran |
Subject: |
bug#24362: 25.1.50; Inconsistent docstring between pcase-let and pcase-let* |
Date: |
Wed, 14 Sep 2016 16:06:57 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
Chunyang Xu <xuchunyang.me@gmail.com> writes:
> It looks like, to me, the structure of the BODY arg of these two should
> be the same (accepting a list froms).
>
> (pcase-let ((a 1))
> (incf a)
> a)
> => 2
>
> (pcase-let* ((a 1))
> (incf a)
> a)
> => 2
It appears to be so. Here's what I did:
(pcase-let* ((a 1)
(b 2))
(message "%d" a)
(message "%d" b))
and ended up with
1
2
in my *Messages* buffer.
> but the docstrings are using the different words.
>
> (pcase-let BINDINGS &rest BODY)
>
> Like `let' but where you can use `pcase' patterns for bindings.
> BODY should be a list of expressions, and BINDINGS should be a list of
> bindings
> ^^^^^^^^^^^^^^^^^^^^^
> of the form (PAT EXP).
>
> (pcase-let* BINDINGS &rest BODY)
>
> Like `let*' but where you can use `pcase' patterns for bindings.
> BODY should be an expression, and BINDINGS should be a list of bindings
> ^^^^^^^^^^^^^
> of the form (PAT EXP).
This patch changes the pcase-let* docstring to match the pcase-let
docstring, but IMO I don't think that the phrase 'a list of expressions'
is exactly the right term for this. That (to me) implies that we are
wrapping the whole body in a list, which you don't.
For example -
; What that phrase implies to me:
(pcase-let ((a 1))
((incf a)
a))
But I have no idea how to better phrase this. For certain, though, they
ought to match because they both behave the same way.
-----
>From c41219fcbbb01b5a219733ac54ad2cade438513b Mon Sep 17 00:00:00 2001
From: Robert Cochran <robert-git@cochranmail.com>
Date: Wed, 14 Sep 2016 15:52:29 -0700
Subject: [PATCH] Fix docstring of pcase-let*
pcase-let*'s docstring could have been taken to mean that the BODY
parameter can only be a single expression, but it can be any numbers of
expressions. Fix it to be more accurate.
* lisp/emacs-lisp/pcase.el (pcase-let*): Fix docstring to be more
accurate about what the BODY parameter can be.
---
lisp/emacs-lisp/pcase.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 0b8dddf..2d61642 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -261,7 +261,7 @@ pcase--let*
;;;###autoload
(defmacro pcase-let* (bindings &rest body)
"Like `let*' but where you can use `pcase' patterns for bindings.
-BODY should be an expression, and BINDINGS should be a list of bindings
+BODY should be a list of expressions, and BINDINGS should be a list of bindings
of the form (PAT EXP)."
(declare (indent 1)
(debug ((&rest (pcase-PAT &optional form)) body)))
--
2.7.4
-----
HTH,
--
~Robert Cochran
GPG Fingerprint - E778 2DD4 FEA6 6A68 6F26 AD2D E5C3 EB36 4886 8871