From: Noam Postavsky <npostavs@gmail.com>
To: 31311@debbugs.gnu.org
Subject: bug#31311: 27.0; doc of `pcase'
Date: Thu, 24 May 2018 19:13:40 -0400 [thread overview]
Message-ID: <87tvqwfxzv.fsf@gmail.com> (raw)
In-Reply-To: <87r2m22ndx.fsf@gnuvola.org> (Thien-Thi Nguyen's message of "Wed, 23 May 2018 21:16:42 +0200")
Thien-Thi Nguyen <ttn@gnu.org> writes:
> Also, ‘pcase’ is the only conditional construct that takes a
> first arg and evaluates it (like ‘case’). The new text explains
> its hybrid nature (‘cond’ and ‘case’) in more detail.
The manual should refer to `cl-case', not `case'. I don't think pcase
should be referred to as a hybrid of cond and cl-case; maybe a hybrid of
cond and cl-destructuring-bind. Or perhaps: like cl-case, only more so.
> +These render @code{case} unsuitable for strings or compound
> +data structures (e.g., lists or vectors).
> +For that, why not use @code{cond}? Wait, what? @dots{}
I guess this is supposed to be funny, but I think it might confuse the
reader.
> +(defun grok/traditional (obj)
> + (if (and (stringp obj)
> + (string-match "^key:\\([[:digit:]]+\\)$" obj))
> + (match-string 1 obj)
> + (list "149" 'default)))
> +(defun grok/pcase (obj)
> + (pcase obj
> + ((or ; @r{line 1}
> + (and ; @r{line 2}
> + (pred stringp) ; @r{line 3}
> + (pred (string-match ; @r{line 4}
> + "^key:\\([[:digit:]]+\\)$")) ; @r{line 5}
> + (app (match-string 1) ; @r{line 6}
You have to pass the original string to match-string.
> + val)) ; @r{line 7}
> + (let val (list "149" 'default))) ; @r{line 8}
> + val))) ; @r{line 9}
This doesn't seem like a great example of pcase usage. Not sure if you
want to introduce the extended `rx' pattern here, but it works better
for this, IMO:
(pcase x
((and (pred stringp)
(rx bol "key:" (let val (+ (any digit))) eol))
val)
(_ 'default))
next prev parent reply other threads:[~2018-05-24 23:13 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-29 16:03 bug#31311: 27.0; doc of `pcase' Drew Adams
2018-04-29 16:39 ` Eli Zaretskii
2018-04-29 18:31 ` Michael Heerdegen
2018-04-29 18:45 ` Eli Zaretskii
2018-04-29 20:05 ` Michael Heerdegen
2018-04-30 2:36 ` Eli Zaretskii
2018-04-30 11:20 ` Noam Postavsky
2018-04-30 13:35 ` Thien-Thi Nguyen
2018-04-30 16:58 ` Drew Adams
2018-04-30 18:04 ` Michael Heerdegen
2018-05-01 9:41 ` Thien-Thi Nguyen
2018-04-30 19:31 ` Eli Zaretskii
2018-05-12 11:18 ` Thien-Thi Nguyen
2018-05-12 13:54 ` Michael Heerdegen
2018-05-15 14:24 ` Thien-Thi Nguyen
2018-05-15 15:16 ` Michael Heerdegen
2018-05-16 10:43 ` Thien-Thi Nguyen
2018-05-16 15:18 ` Michael Heerdegen
2018-05-20 18:59 ` Thien-Thi Nguyen
2018-05-23 13:55 ` Drew Adams
2018-05-23 15:42 ` Eli Zaretskii
2018-05-23 15:28 ` Eli Zaretskii
2018-05-23 19:16 ` Thien-Thi Nguyen
2018-05-24 16:23 ` Eli Zaretskii
2018-05-26 7:58 ` Thien-Thi Nguyen
2018-05-24 23:13 ` Noam Postavsky [this message]
2018-05-26 9:01 ` Thien-Thi Nguyen
2018-05-26 15:26 ` Drew Adams
2018-05-27 8:22 ` Thien-Thi Nguyen
2018-05-27 8:41 ` Thien-Thi Nguyen
2018-05-27 13:31 ` Drew Adams
2018-05-27 14:12 ` Noam Postavsky
2018-05-27 16:16 ` Eli Zaretskii
2018-05-27 16:26 ` Eli Zaretskii
2018-05-27 16:32 ` Andreas Schwab
2018-05-27 17:30 ` Eli Zaretskii
2018-05-27 17:45 ` Andreas Schwab
2018-05-27 17:42 ` Thien-Thi Nguyen
2018-05-28 7:25 ` Nicolas Petton
2018-05-28 7:33 ` Nicolas Petton
2018-05-28 8:27 ` Eli Zaretskii
2018-05-28 9:32 ` Nicolas Petton
2018-05-12 13:56 ` Noam Postavsky
2018-05-15 14:37 ` Thien-Thi Nguyen
2019-08-25 12:56 ` Michael Heerdegen
2018-04-30 14:28 ` Eli Zaretskii
2018-04-29 22:59 ` Drew Adams
2018-04-29 23:16 ` Noam Postavsky
2018-04-29 23:28 ` Drew Adams
2018-04-30 0:29 ` Michael Heerdegen
2018-04-30 2:47 ` Drew Adams
2018-04-30 7:48 ` Thien-Thi Nguyen
2018-05-21 17:04 ` Thien-Thi Nguyen
2022-04-29 13:48 ` Lars Ingebrigtsen
2022-04-29 14:39 ` Drew Adams
[not found] <<b5d5bbd5-f90c-4836-9307-7a74ad0b2320@default>
[not found] ` <<83wowqrmp8.fsf@gnu.org>
2018-04-29 17:02 ` Drew Adams
2018-04-29 17:16 ` Eli Zaretskii
2018-04-29 18:38 ` Michael Heerdegen
2018-04-29 19:43 ` Drew Adams
2018-04-29 20:00 ` Michael Heerdegen
[not found] <<<b5d5bbd5-f90c-4836-9307-7a74ad0b2320@default>
[not found] ` <<<83wowqrmp8.fsf@gnu.org>
[not found] ` <<9cd18e10-8f14-4a49-a3a4-ed9d50afe860@default>
[not found] ` <<83sh7erl01.fsf@gnu.org>
2018-04-29 17:26 ` 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=87tvqwfxzv.fsf@gmail.com \
--to=npostavs@gmail.com \
--cc=31311@debbugs.gnu.org \
/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.