Subject: bug#61281: “`(a \, b)” equals to “`(a . , b)”

From: Michael Heerdegen <[email-masked]>
Date: Tue, 07 Feb 2023 03:00:16 +0100

Drew Adams <[email-masked]> writes:

> THEN the sexp `(a \, foo) should just return (a \, foo),
> a list of three symbols.

I missed that you are still talking about this thing.  Yes, you can call
this a bug, but given that we agreed that it is unlikely that the
behavior will change, I somehow thought you were describing some other
thing.

> > Relying on the return value of that expression
> > is calling for trouble.
>
> How so?  On what basis do you think it's "illegal"?

On the basis these things are implemented in Elisp.  It is likely that
this will not change, so I think we should warn users to avoid using the
symbols with names ",@" and "," in backquote expressions directly (you
can still prevent them being handled with quoting of course, so it's not
forbidden to use them).  Because of this "bug" and that the behavior
depends on implementation details (also that of ",@", maybe it's also
broken in some cases or works only by luck, dunno).

> > > 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.
> >
> > The author is allowed to add more details about
> > how the reader parses that character of course.
>
> Author of the code?  The original comment?  My
> mail?

The author of the documentation improvement I suggested, Drew.  I don't
know who that will be.

> The behavior depends on what X is allowed to be.
> Is it something that parses (is read) as a separate
> sexp?  Is it any sequence of chars?  Any sequence
> of symbol chars?

It is obvious that the Lisp implementation of the "`" macro receives
symbolic expressions.  It's a Lisp library.  And only a comment in a
file header, not the manual.

> I guess at this point we understand each other and
> can just agree to disagree.

I think we actually agree on all things more or less but talked past
each other.

Michael.