From: Drew Adams <drew.adams@oracle.com>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: Xie Shynur <one.last.kiss@outlook.com>,
"61281@debbugs.gnu.org" <61281@debbugs.gnu.org>
Subject: bug#61281: “`(a \, b)” equals to “`(a . , b)”
Date: Mon, 6 Feb 2023 03:49:03 +0000 [thread overview]
Message-ID: <SJ0PR10MB548888A8583A6CC917E8227DF3DA9@SJ0PR10MB5488.namprd10.prod.outlook.com> (raw)
In-Reply-To: <87ttzzsdft.fsf@web.de>
> > And the question is about "\,", not ",".
> >
> > (setq ,X 42) ; => 42
> > (setq \,X 42) ; => (wrong-type-argument symbolp (\, X))
>
> The other way round.
Yes, I accidentally reversed the comments. Thx.
> "\,X" is interpreted as symbol, just as "\,".
Yes, backslash escapes the special meaning of
comma -- but only outside backquote.
Unescaped comma by itself is not interpreted as
a symbol inside backquote or outside it.
And leaving aside the X:
(setq , 42) ; => (wrong-number-of-arguments setq 1)
; from expansion to (setq (\, 42))
(setq \, 42) ; => 42
Comma is special in raising an error outside
backquote. But there, escaping it makes it
just symbol syntax. Not so inside backquote:
there, escaping it has no effect -- "\," and
"," behave the same inside backquote.
> What's the question about "\,"?
Why is it equivalent to "," inside backquote?
> > (I'd be interested in what the case is in Common
> > Lisp, including what a typical implementation is.)
>
> AFAIU, there are different implementations. I tested two random CL and
> two random scheme interpreters. Of those 4, 3 expanded
> ,X --> (unquote X), and in one case ,X was read as an atomic expression.
Sorry, I don't know what that means. How is
"\," syntax treated inside backquote in those
interpreters?
If different CLs have different behavior in this
regard, then I wonder what the spec says about it
(if anything). I didn't notice anything.
> > The question is whether \, and , should have the
> > same behavior. Certainly \z and z have the same
> > behavior. But character z has no special behavior
> > inside a backquote.
>
> I think the necessity to escape the comma to get the symbol has been
> introduced to avoid ambiguities with uses of the reader macro.
Not sure what you mean. I'd think it's to give
you a way to use comma in a symbol name. Same as
for the other chars you need to escape for that,
such as "(".
Escaping a comma outside backquote works, to give
you symbol syntax, but that doesn't work inside
backquote? Why doesn't it? I don't mean "why" in
terms of "how so". I mean why _should_ that be
the case? Is there a good reason for this behavior
(in terms of useful behavior, not in terms of
implementation)? I don't see any, so far.
> > \@ and @ don't have the same behavior inside a
> > backquote. And neither do \. and . -- only \,
> > and , have the same behavior.
> >
> > To me, that's just an implementation/design
> > thing, not something normal or inevitable.
> > Not a big deal, not the end of the world.
> > [A] minor unfortunate thing (gotcha).
>
> In any case, much too late to change it.
>
> > I pointed to the comments in the code. They tell the story. But I
> > don't think there's any such explanation/description in the doc.
>
> Yes, it would be good to add something.
Glad we agree on something. ;-)
next prev parent reply other threads:[~2023-02-06 3:49 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 [this message]
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
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=SJ0PR10MB548888A8583A6CC917E8227DF3DA9@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.