On Fri, Dec 1, 2023, 10:20 PM Richard Stallman <rms@gnu.org> wrote:
  > > But a person who is just starting to look at this code, and reads that
  > > function first, is likely to be impeded in starting to reach that sort
  > > of understanding.
  > >

  > I have to respectfully disagree - dotted pair notation is a pretty
  > fundamental part of LISP syntax, regardless of dialect.

That is true, but it is not pertinent to my finding that pcase code
confusing.  I know what dotted pairs mean, but I was not sure what
they meant in pcase patterns.

Likewise for Eli.  It is unkind and unhelpful to lecture him about
what dotted paris are.

I don't believe stating a disagreement is lecturing.  My understanding is that we (or at least Eli and my response to him) are discussing concern for a hypothetical Elisp programmer, as Eli has (if I understood correctly) no problem understanding pcase.

Maybe it would be more useful to say that LISP has at least 3 kinds of syntax - read syntax, special forms, and macros (forms defined by a function written in LISP itself).  The difference between special forms and macros can largely be ignored, which is one of the special characteristics of LISP.  The difference between read syntax and the latter two is more substantial.  I think it's reasonable to expect a LISP programmer to recognize distinct text expressions for which the lisp "read" primitive produces identical S-exressions.  Those differences cannot have anything to do with the LISP forms processed by the expander/evaluator.

That being said, it wouldn't hurt to have a table exhaustively list all read syntax recognized by the reader in one place, for reference.  It can be difficult to determine what a particular bit of LISP source code means when it contains infrequently used characters, since LISP is very permissive in the use of characters in symbols in general.

I just don't think this dotted pair concern is a credible criticism of pcase.  Maybe of a particular style preferences or idioms of different programmers, but it is orthogonal to pcase.  Why would it only be confusing when used in a pcase form?  pcase is not read-level syntax.

Lynn