From: Drew Adams <drew.adams@oracle.com>
To: Michael Heerdegen <michael_heerdegen@web.de>,
Xie Shynur <one.last.kiss@outlook.com>
Cc: "61281@debbugs.gnu.org" <61281@debbugs.gnu.org>
Subject: bug#61281: “`(a \, b)” equals to “`(a . , b)”
Date: Mon, 6 Feb 2023 05:01:31 +0000 [thread overview]
Message-ID: <SJ0PR10MB5488FAD81A8592EC4F346558F3DA9@SJ0PR10MB5488.namprd10.prod.outlook.com> (raw)
In-Reply-To: <87ilgfsaav.fsf@web.de>
> (2) We should (in the recently added function docstrings and the manual)
> explain that the reader constructs `X, ,X and ,@X are expanded to (or
> equivalent to) (\` X), (\, X) and (\,@ X) respectively, where the cars
> are the symbols with the names "`", "," and ",@".
Yes and no, no?
I see a difference between escaped comma and
escaped comma before @. The above "are expanded
to" doesn't cover this, I think. For example:
`(a ,@ foo) ; ==> (a 4 5)
`(a \,@foo) ; ==> (a \,@ foo) - good
`(a \,@ foo) ; ==> (a \,@ foo) - good
`(a , foo) ; ==> (a 4 5)
`(a \,foo) ; ==> (a \,foo) - good
`(a \, foo) ; ==> (a 4 5) - bad, the bug case
The \,@ cases and the \,foo case "work" because
\, immediately followed by any escaped char or
unescaped whitespace etc. works. It's only \,
followed by unescaped whitespace etc. that
doesn't work.
> While this is an implementation detail, not knowing about that fact
> leaves the semantics of expressions like above unclear, which is not
> good.
Agreed, but I don't think just describing those
expansions that way is sufficient. For one
thing, what's X? Whether certain chars follow
the comma immediately makes a difference.
> (3) Fix the header in backquote.el as suggested by Drew, e.g. like this:
+;; When the Lisp reader sees `X it generates (\` X).
+;; When it sees ,X it generates (\, X). For ,@X it generates
+;; (\,@ X).
I don't think that's sufficient - see above.
,X and ,@X aren't handled the same, and it
matters what X is. X is not necessarily a new
sexp.
next prev parent reply other threads:[~2023-02-06 5:01 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-04 23:23 bug#61281: “`(a \, b)” equals to “`(a . , b)” Xie Shynur
2023-02-04 23:34 ` Drew Adams
2023-02-04 23:43 ` Drew Adams
2023-02-05 0:28 ` Michael Heerdegen
2023-02-05 3:30 ` Drew Adams
2023-02-05 4:32 ` Michael Heerdegen
2023-02-05 4:55 ` Michael Heerdegen
2023-02-05 15:53 ` Drew Adams
2023-02-05 23:56 ` Michael Heerdegen
2023-02-06 2:26 ` Drew Adams
2023-02-06 3:03 ` Michael Heerdegen
2023-02-06 3:49 ` Drew Adams
2023-02-06 10:49 ` Ihor Radchenko
2023-02-06 16:46 ` Drew Adams
2023-02-07 1:07 ` Michael Heerdegen
2023-02-07 1:40 ` Michael Heerdegen
2023-02-07 11:50 ` bug#61281: Double backquote expansion and ", " (was: bug#61281: “`(a \, b)” equals to “`(a . , b)”) Ihor Radchenko
2023-02-07 23:33 ` bug#61281: Double backquote expansion and ", " Michael Heerdegen
2023-02-06 9:40 ` bug#61281: “`(a \, b)” equals to “`(a . , b)” Andreas Schwab
2023-02-06 16:43 ` Drew Adams
2023-02-07 8:56 ` Andreas Schwab
2023-02-07 18:00 ` Drew Adams
2023-02-07 23:44 ` Michael Heerdegen
2023-02-08 3:09 ` Drew Adams
2023-02-08 9:06 ` Andreas Schwab
2023-02-09 1:29 ` Michael Heerdegen
2023-02-09 2:04 ` Drew Adams
2023-02-09 2:15 ` Michael Heerdegen
2023-02-08 9:12 ` Andreas Schwab
2023-02-05 6:32 ` Jim Porter
2023-02-06 0:13 ` Michael Heerdegen
2023-02-06 0:18 ` Michael Heerdegen
2023-02-06 1:14 ` Jim Porter
2023-02-05 15:48 ` Drew Adams
2023-02-05 23:17 ` Michael Heerdegen
2023-02-06 1:49 ` Drew Adams
2023-02-06 4:11 ` Michael Heerdegen
2023-02-06 5:01 ` Drew Adams [this message]
2023-02-06 5:22 ` Drew Adams
2023-02-06 5:25 ` Michael Heerdegen
2023-02-06 16:43 ` Drew Adams
2023-02-07 2:00 ` Michael Heerdegen
2023-02-07 18:00 ` Drew Adams
2023-02-07 23:36 ` Michael Heerdegen
2023-02-08 3:09 ` Drew Adams
2023-02-09 1:37 ` Michael Heerdegen
2023-02-09 2:10 ` Drew Adams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=SJ0PR10MB5488FAD81A8592EC4F346558F3DA9@SJ0PR10MB5488.namprd10.prod.outlook.com \
--to=drew.adams@oracle.com \
--cc=61281@debbugs.gnu.org \
--cc=michael_heerdegen@web.de \
--cc=one.last.kiss@outlook.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).