From: Alan Mackenzie <acm@muc.de>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: Richard Stallman <rms@gnu.org>,
Spencer Baugh <sbaugh@janestreet.com>,
emacs-devel@gnu.org
Subject: Re: combining cond and let, to replace pcase.
Date: Sun, 19 Nov 2023 21:36:31 +0000 [thread overview]
Message-ID: <ZVp_3zG-W5EnYfRT@ACM> (raw)
In-Reply-To: <878r6u3s7f.fsf@web.de>
Hello, Michael.
On Sun, Nov 19, 2023 at 12:20:20 +0100, Michael Heerdegen wrote:
> Richard Stallman <rms@gnu.org> writes:
> > Some of them could do destructuring as well as matching.
> > I hoipe that using a few constructs to divide up the job will avoid
> > the kludginess of pcase's bells-and-whistles-for-everything approach,
> > resulting in something equally convenient but made of simple
> > components.
> I really don't know how you come to such a conclusion.
> The original docstring of `pcase' was half of a screen page and it was
> _complete_. Syntax and semantics are simple, nearly trivial, and
> consistent. It took one minute for me to learn everything. Then the
> doc has been extended to the current form adding more prose, in my eyes,
> it added not a single bit of information.
The original doc string of pcase was not a high quality one. See the
thread in emacs-devel Subject: The poor state of documentation of pcase
like things, started by me on 2015-12-16.
Some of its deficiencies, listed in that post, were (i) Use of obscure
terms like U-pattern and Q-pattern which it failed to define; (ii) the
semantics of these structures was not elucidated; (iii) there was no
rigorous definition of what ` and , mean in pcase structures; (iv) there
was no specification of when a pcase pattern matched something; (v)
there was no specification of when and how variables got bound.
The doc string didn't say in accessible language what pcase does.
But I'm repeating myself. It's all in that 8 year old post.
I may be mis-remembering, but I think it was you, Michael, who put in
the work to fix these defects in pcase's doc string. The result was far
better than the original.
> If some people have a problem understanding the abstract approach, this
> is something different. But a "kludginess of pcase's
> bells-and-whistles-for-everything approach" does not exist. So please
> understand that your approach will make the situation worse for others.
> To me this discussion looks like some people aren't willing to accept
> multiplication like 10*5 because it "looks strange" and "one would rather
> write "5+5+5+5+5+5+5+5+5+5" because this would be much simpler and we
> don't need this strange "*" at all.
> Is this unfair? I don't know. But are there any _objective_ reasons
> why the design of `pcase' would not be optimal? To me this all looks
> more like being based on vague feelings because the approach is a bit
> different from what people are used to. But the approach is extremely
> simple. I think that replacing it with multiple other tools would
> complicate the matter.
pcase complicated the meaning of ` and ,. Before pcase these had
definite meanings. Afterwards, they became highly context dependent.
The usual evasive reply from pcase proponents here is that ` has always
been an abbreviation for backslash and that didn't change. A lot
changed, here. An alternative here would have been to invent new reader
macros instead of complicating and ambiguating ` and ,.
[ .... ]
> Michael.
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2023-11-19 21:36 UTC|newest]
Thread overview: 342+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-16 3:04 Instead of pcase Richard Stallman
2023-11-16 7:37 ` Philip Kaludercic
2023-11-16 17:18 ` T.V Raman
2023-11-16 17:44 ` Michael Heerdegen
2023-11-16 18:16 ` Philip Kaludercic
2023-11-17 8:54 ` Complex SPEC for variables/customization like font-lock-keywords/org-capture-templates/etc (was: Instead of pcase) Ihor Radchenko
2023-11-25 4:03 ` Complex SPEC for variables/customization like font-lock-keywords/org-capture-templates/etc Stefan Monnier
2023-11-16 19:19 ` Instead of pcase Eli Zaretskii
2023-11-17 8:02 ` Michael Heerdegen
2023-11-16 18:21 ` Dmitry Gutov
2023-11-16 18:39 ` T.V Raman
2023-11-16 18:47 ` Philip Kaludercic
2023-11-16 18:51 ` T.V Raman
2023-11-18 3:04 ` Richard Stallman
2023-11-19 12:23 ` Michael Heerdegen
2023-11-19 16:02 ` Barry Fishman
2023-11-19 17:59 ` Dmitry Gutov
2023-11-19 19:31 ` Eric Abrahamsen
2023-11-25 4:23 ` Stefan Monnier via Emacs development discussions.
2023-11-27 3:12 ` Richard Stallman
2023-11-19 21:15 ` Barry Fishman
2023-11-20 1:15 ` Dmitry Gutov
2023-11-20 15:32 ` Michael Heerdegen
2023-11-23 2:57 ` Richard Stallman
2023-11-24 17:14 ` Dmitry Gutov
2023-11-27 3:09 ` Richard Stallman
2023-11-27 12:21 ` Dmitry Gutov
2023-11-29 3:42 ` Richard Stallman
2023-11-29 12:56 ` Dmitry Gutov
2023-12-01 3:17 ` Richard Stallman
2023-11-28 2:44 ` Richard Stallman
2023-11-28 12:39 ` Dmitry Gutov
2023-11-30 3:37 ` Richard Stallman
2023-12-01 0:18 ` Dmitry Gutov
2023-12-01 5:51 ` Emanuel Berg
2023-12-10 8:34 ` Alfred M. Szmidt
2023-12-10 9:35 ` Eli Zaretskii
2023-12-10 9:53 ` Alfred M. Szmidt
2023-12-10 10:35 ` Eli Zaretskii
2023-12-10 11:05 ` Alfred M. Szmidt
2023-12-01 7:21 ` Eli Zaretskii
2023-12-01 8:03 ` Manuel Giraud via Emacs development discussions.
2023-12-02 3:21 ` Richard Stallman
2023-11-24 18:14 ` Michael Heerdegen
2023-11-24 18:35 ` Dmitry Gutov
2023-11-27 3:14 ` Richard Stallman
2023-11-28 2:46 ` Richard Stallman
2023-11-28 6:35 ` Nikita Domnitskii
2023-11-30 3:37 ` Richard Stallman
2023-12-02 21:37 ` Lynn Winebarger
2023-12-10 15:14 ` Richard Stallman
2023-12-10 16:27 ` Lynn Winebarger
2023-12-10 20:28 ` Michael Heerdegen via Emacs development discussions.
2023-12-10 21:13 ` Lynn Winebarger
2023-12-12 3:43 ` Richard Stallman
2023-12-12 6:46 ` Tomas Hlavaty
2023-12-12 15:18 ` [External] : " Drew Adams
2023-12-14 3:24 ` Richard Stallman
2023-12-14 16:52 ` Drew Adams
2023-12-16 4:24 ` Richard Stallman
2023-12-16 5:04 ` Drew Adams
2023-12-16 18:30 ` Bob Rogers
2023-12-18 4:13 ` Richard Stallman
2023-12-12 19:24 ` Tomas Hlavaty
2023-12-12 21:36 ` [External] : " Drew Adams
2023-12-12 22:25 ` Michael Heerdegen via Emacs development discussions.
2023-12-13 1:32 ` Adam Porter
2023-12-14 3:23 ` Richard Stallman
2023-12-16 4:23 ` Richard Stallman
2023-12-18 4:09 ` cond* Richard Stallman
2023-12-18 10:08 ` cond* João Távora
2023-12-21 4:20 ` cond* Richard Stallman
2023-12-21 9:50 ` cond* João Távora
2023-12-21 16:01 ` [External] : cond* Drew Adams
2023-12-21 16:20 ` João Távora
2023-12-24 3:56 ` Richard Stallman
2023-12-24 3:57 ` cond* Richard Stallman
2023-12-21 14:10 ` cond* Ihor Radchenko
2023-12-24 3:57 ` cond* Richard Stallman
2023-12-25 14:14 ` cond* Ihor Radchenko
2023-12-19 3:49 ` cond* Richard Stallman
2023-12-19 12:13 ` cond* João Távora
2023-12-22 3:14 ` cond* Richard Stallman
2023-12-22 7:27 ` cond* Philip Kaludercic
2023-12-25 3:41 ` cond* Richard Stallman
2023-12-25 12:32 ` cond* Philip Kaludercic
2023-12-27 4:54 ` cond* Richard Stallman
2023-12-27 14:34 ` cond* Philip Kaludercic
2023-12-29 3:52 ` cond* Richard Stallman
2024-01-01 14:49 ` cond* Ihor Radchenko
2024-01-03 4:13 ` cond* Richard Stallman
2024-01-03 15:57 ` cond* Ihor Radchenko
2024-01-05 4:23 ` cond* Richard Stallman
2024-01-06 14:33 ` cond* Ihor Radchenko
2024-01-06 22:25 ` [External] : cond* Drew Adams
2024-01-08 3:45 ` Richard Stallman
2024-01-08 15:20 ` Drew Adams
2024-01-09 2:53 ` map seq and radix-tree-leaf, in pcase Richard Stallman
2024-01-08 3:47 ` cond* Richard Stallman
2024-01-10 13:03 ` cond* Ihor Radchenko
2024-01-13 3:50 ` cond* Richard Stallman
2024-01-13 6:32 ` cond* Adam Porter
2024-01-16 3:31 ` cond* Richard Stallman
2024-01-13 19:47 ` cond* Ihor Radchenko
2024-01-15 3:13 ` cond* Richard Stallman
2024-01-08 3:47 ` cond* Richard Stallman
2024-01-08 15:13 ` cond* Ihor Radchenko
2024-01-27 3:37 ` cond* Richard Stallman
2024-02-01 16:26 ` cond* Ihor Radchenko
2024-02-03 3:36 ` cond* Richard Stallman
2024-02-03 16:52 ` cond* Ihor Radchenko
2024-01-03 4:13 ` cond* Richard Stallman
2024-01-03 15:48 ` cond* Ihor Radchenko
2024-01-06 4:31 ` cond* Richard Stallman
2024-01-06 13:09 ` cond* Ihor Radchenko
2024-01-08 3:47 ` cond* Richard Stallman
2024-01-08 15:26 ` cond* Ihor Radchenko
2024-01-27 3:37 ` cond* Richard Stallman
2024-01-03 4:13 ` cond* Richard Stallman
2024-01-03 15:50 ` cond* Ihor Radchenko
2024-01-06 4:31 ` cond* Richard Stallman
2024-01-06 13:13 ` cond* Ihor Radchenko
2024-01-08 3:47 ` cond* Richard Stallman
2024-01-08 15:35 ` cond* Ihor Radchenko
2023-12-19 15:53 ` [External] : cond* Drew Adams
2023-12-21 4:22 ` Richard Stallman
2023-12-21 4:22 ` Richard Stallman
2023-12-18 4:09 ` cond* Richard Stallman
2023-12-18 5:41 ` cond* Adam Porter
2023-12-21 4:20 ` cond* Richard Stallman
2023-12-16 4:23 ` Instead of pcase Richard Stallman
2023-12-16 4:23 ` Richard Stallman
2023-12-16 6:57 ` Adam Porter
2023-12-20 3:28 ` Richard Stallman
2023-12-20 10:52 ` Adam Porter
2023-12-23 2:53 ` Richard Stallman
2023-12-23 2:53 ` Richard Stallman
2023-12-25 14:26 ` Ihor Radchenko
2023-12-27 4:54 ` Richard Stallman
2023-12-28 13:05 ` Ihor Radchenko
2023-12-30 3:20 ` Richard Stallman
2024-01-01 14:33 ` Ihor Radchenko
2024-01-03 4:13 ` Richard Stallman
2024-01-03 4:13 ` Richard Stallman
2024-01-03 16:08 ` Ihor Radchenko
2024-01-05 4:23 ` Richard Stallman
2024-01-06 13:04 ` Ihor Radchenko
2024-01-08 3:47 ` Richard Stallman
2024-01-08 15:42 ` Ihor Radchenko
2024-01-27 3:37 ` Richard Stallman
2023-12-13 4:58 ` Richard Stallman
2023-12-11 3:31 ` Richard Stallman
2023-11-19 13:49 ` Dmitry Gutov
2023-11-21 2:42 ` Richard Stallman
2023-11-21 5:14 ` Jim Porter
2023-11-21 5:34 ` Yuri Khan
2023-11-21 11:11 ` Dmitry Gutov
2023-11-21 15:38 ` Michael Heerdegen
2023-11-23 3:00 ` Richard Stallman
2023-11-24 3:34 ` Richard Stallman
2023-11-24 4:30 ` Jim Porter
2023-11-24 7:45 ` Eli Zaretskii
2023-11-25 3:08 ` Emanuel Berg
2023-11-24 17:01 ` Dmitry Gutov
2023-11-24 17:29 ` Lynn Winebarger
2023-11-28 2:44 ` Richard Stallman
2023-11-30 19:14 ` Lynn Winebarger
2023-11-30 19:26 ` Eli Zaretskii
2023-11-30 20:30 ` Michael Heerdegen via Emacs development discussions.
2023-12-01 6:24 ` Eli Zaretskii
2023-12-01 15:47 ` Michael Heerdegen via Emacs development discussions.
2023-12-01 16:07 ` Eli Zaretskii
2023-12-01 20:27 ` Alan Mackenzie
2023-12-02 13:24 ` Michael Heerdegen via Emacs development discussions.
2023-12-02 13:51 ` Emanuel Berg
2023-12-04 3:11 ` Richard Stallman
2023-12-03 3:28 ` Richard Stallman
2023-11-30 20:47 ` João Távora
2023-12-01 6:31 ` Eli Zaretskii
2023-12-01 7:07 ` Yuri Khan
2023-12-01 8:10 ` Eli Zaretskii
2023-12-01 9:04 ` Andreas Schwab
2023-12-04 3:08 ` Richard Stallman
2023-12-04 11:58 ` Eli Zaretskii
2023-12-04 12:35 ` Lynn Winebarger
2023-12-04 13:20 ` Eli Zaretskii
2023-12-04 17:46 ` Andreas Schwab
2023-12-07 2:48 ` Richard Stallman
2023-12-07 17:42 ` Andreas Schwab
2023-12-09 4:02 ` Richard Stallman
2023-12-04 18:17 ` Lynn Winebarger
2023-12-04 12:37 ` Dmitry Gutov
2023-12-08 3:54 ` Richard Stallman
2023-12-01 10:13 ` João Távora
2023-12-01 8:35 ` Andreas Schwab
2023-12-01 10:02 ` João Távora
2023-12-01 11:52 ` Eli Zaretskii
2023-12-01 12:48 ` Dmitry Gutov
2023-12-01 14:44 ` Eli Zaretskii
2023-12-01 18:28 ` Dmitry Gutov
2023-12-01 18:40 ` Eli Zaretskii
2023-12-01 18:45 ` João Távora
2024-01-09 5:36 ` Stefan Kangas
2023-12-01 13:28 ` João Távora
2023-12-01 16:25 ` Andreas Schwab
2024-01-09 5:33 ` Stefan Kangas
2024-01-09 10:43 ` João Távora
2023-12-01 16:04 ` Michael Heerdegen via Emacs development discussions.
2023-12-01 16:33 ` Eli Zaretskii
2023-12-02 3:20 ` Richard Stallman
2023-12-02 8:41 ` Andreas Schwab
2023-12-02 9:02 ` Philip Kaludercic
2023-12-02 10:14 ` Emanuel Berg
2023-12-02 17:02 ` Barry Fishman
2023-12-02 20:25 ` Michael Heerdegen via Emacs development discussions.
2023-12-03 4:30 ` Emanuel Berg
2023-12-05 2:58 ` Richard Stallman
2023-12-05 3:36 ` chad
2023-12-08 3:53 ` Richard Stallman
2023-12-02 14:33 ` Michael Heerdegen via Emacs development discussions.
2023-12-04 3:11 ` Richard Stallman
2023-12-02 18:01 ` Lynn Winebarger
2023-12-04 3:11 ` Richard Stallman
2023-12-04 12:27 ` Lynn Winebarger
2023-12-03 3:27 ` Richard Stallman
2023-11-25 4:15 ` Stefan Monnier
2023-11-27 3:12 ` Richard Stallman
2023-11-30 18:06 ` Michael Heerdegen
2023-11-16 18:49 ` Dmitry Gutov
2023-11-16 23:41 ` Emanuel Berg
2023-11-17 7:34 ` Eli Zaretskii
2023-11-26 3:17 ` Richard Stallman
2023-11-16 15:06 ` Michael Heerdegen
2023-11-16 17:31 ` T.V Raman
2023-11-16 18:26 ` Jim Porter
2023-11-16 18:40 ` T.V Raman
2023-11-16 19:13 ` Jim Porter
2023-11-20 3:06 ` Richard Stallman
2023-11-20 14:35 ` Michael Heerdegen
2023-11-23 2:57 ` Richard Stallman
2023-11-16 15:20 ` Spencer Baugh
2023-11-16 20:16 ` Tomas Hlavaty
2023-11-16 21:37 ` [External] : " Drew Adams
2023-11-25 4:34 ` Stefan Monnier via Emacs development discussions.
2023-11-25 8:53 ` Eli Zaretskii
2023-11-18 3:03 ` combining cond and let, to replace pcase Richard Stallman
2023-11-19 11:20 ` Michael Heerdegen
2023-11-19 11:43 ` Eli Zaretskii
2023-11-19 12:16 ` Gerd Möllmann
2023-11-19 13:21 ` Eli Zaretskii
2023-11-19 13:32 ` Gerd Möllmann
2023-11-19 14:41 ` Eli Zaretskii
2023-11-19 15:27 ` Gerd Möllmann
2023-11-19 15:29 ` Eli Zaretskii
2023-11-19 16:03 ` Joost Kremers
2023-11-19 16:59 ` Eli Zaretskii
2023-11-19 18:29 ` Joost Kremers
2023-11-19 18:35 ` Eli Zaretskii
2023-11-19 12:50 ` Michael Heerdegen
2023-11-19 13:08 ` Eli Zaretskii
2023-11-19 13:52 ` Michael Heerdegen
2023-11-19 14:45 ` Eli Zaretskii
2023-11-20 15:35 ` Michael Heerdegen
2023-11-20 16:37 ` Eli Zaretskii
2023-11-21 8:33 ` Michael Heerdegen
2023-11-21 8:39 ` Michael Heerdegen
2023-11-19 13:59 ` Dmitry Gutov
2023-11-19 14:49 ` Eli Zaretskii
2023-11-19 14:53 ` Dmitry Gutov
2023-11-19 12:04 ` Gerd Möllmann
2023-11-19 18:10 ` Tomas Hlavaty
2023-11-25 4:45 ` Stefan Monnier via Emacs development discussions.
2023-11-28 15:31 ` João Távora
2023-11-28 15:55 ` Stefan Monnier
2023-11-19 21:36 ` Alan Mackenzie [this message]
2023-11-21 16:14 ` Michael Heerdegen
2023-11-19 16:08 ` Axel Forsman
2023-11-21 15:53 ` Michael Heerdegen
2023-11-23 2:58 ` Richard Stallman
2023-11-23 7:02 ` Tomas Hlavaty
2023-11-26 3:14 ` Richard Stallman
2023-11-27 17:07 ` Tomas Hlavaty
2023-11-27 17:59 ` Yuri Khan
2023-11-28 14:25 ` Tomas Hlavaty
2023-11-23 8:58 ` Manuel Giraud via Emacs development discussions.
2023-11-26 3:14 ` Richard Stallman
2023-11-24 3:08 ` Daniel Semyonov
2023-11-24 3:26 ` Daniel Semyonov
2023-11-25 2:59 ` Richard Stallman
2023-11-25 5:11 ` Stefan Monnier via Emacs development discussions.
2023-11-27 3:11 ` Richard Stallman
2023-11-27 18:13 ` Manuel Giraud via Emacs development discussions.
2023-11-27 18:49 ` Yuri Khan
2023-11-27 23:12 ` Stefan Monnier
2023-11-29 3:41 ` Richard Stallman
2023-11-29 3:40 ` Richard Stallman
2023-11-27 3:11 ` Richard Stallman
2023-11-16 18:11 ` Instead of pcase Emanuel Berg
2023-11-16 19:26 ` Eli Zaretskii
2023-11-16 22:16 ` Emanuel Berg
2023-11-17 7:30 ` Eli Zaretskii
2023-11-17 8:09 ` Emanuel Berg
2023-11-17 12:16 ` Eli Zaretskii
2023-11-18 6:26 ` Emanuel Berg
2023-11-18 7:21 ` Po Lu
2023-11-18 7:41 ` Eli Zaretskii
2023-11-16 18:22 ` Jim Porter
2023-11-16 22:55 ` Emanuel Berg
2023-11-17 5:36 ` Po Lu
2023-11-19 11:48 ` Michael Heerdegen
2023-11-19 12:50 ` Eli Zaretskii
2023-11-19 14:05 ` Dmitry Gutov
2023-11-19 14:41 ` Po Lu
2023-11-19 14:44 ` Dmitry Gutov
2023-11-19 14:52 ` Eli Zaretskii
2023-11-19 14:58 ` Dmitry Gutov
2023-11-19 15:14 ` Eli Zaretskii
2023-11-19 18:04 ` Dmitry Gutov
2023-11-19 18:30 ` Eli Zaretskii
2023-11-19 18:51 ` Dmitry Gutov
2023-11-19 19:49 ` Eli Zaretskii
2023-11-21 2:43 ` Richard Stallman
2023-11-19 14:14 ` Michael Heerdegen
2023-11-19 15:09 ` Eli Zaretskii
2023-11-20 14:52 ` Michael Heerdegen
2023-11-19 14:29 ` Po Lu
2023-11-20 15:20 ` Michael Heerdegen
2023-11-20 15:29 ` Dmitry Gutov
2023-11-20 23:43 ` Po Lu
2023-11-21 1:09 ` Dmitry Gutov
2023-11-21 1:49 ` Po Lu
2023-11-21 1:59 ` Dmitry Gutov
2023-11-21 4:04 ` Po Lu
2023-11-21 11:27 ` Dmitry Gutov
2023-11-21 11:49 ` Po Lu
2023-11-20 23:45 ` Jose E. Marchesi
2023-11-20 23:54 ` Emanuel Berg
2023-11-21 2:01 ` Dmitry Gutov
2023-11-22 2:59 ` Richard Stallman
2023-11-22 3:29 ` Emanuel Berg
2023-11-22 11:58 ` Dmitry Gutov
2023-11-24 3:38 ` Richard Stallman
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=ZVp_3zG-W5EnYfRT@ACM \
--to=acm@muc.de \
--cc=emacs-devel@gnu.org \
--cc=michael_heerdegen@web.de \
--cc=rms@gnu.org \
--cc=sbaugh@janestreet.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.