From: "Garreau\, Alexandre" <galex-713@galex-713.eu>
To: Andy Moreton <andrewjmoreton@gmail.com>
Cc: emacs-devel@gnu.org
Subject: pcase-lambda usage [Was: Re: Replace trivial pcase occurrences in the Emacs sources]
Date: Mon, 29 Oct 2018 19:49:00 +0100 [thread overview]
Message-ID: <874ld4twpv.fsf_-_@portable.galex-713.eu> (raw)
In-Reply-To: <vz1k1m0yfmh.fsf@gmail.com> (Andy Moreton's message of "Mon, 29 Oct 2018 14:47:02 +0000")
From what I learnt from pcase-lambda (I wished there were a simple
`match' implemented over `cl-destructuring-bind', similar to
one-matching cl implementations, on which would be based pcase (which
match several alternatively), and pcase-*), here a docstring that seems
better to me, probably not ideal, if anybody can improve, tell it:
#+BEGIN_SRC elisp
"Like `lambda' but destructure each PATTERN with `pcase'.
It is not self-quoting: the result of `pcase-lambda' is a lambda
expression like returned by `lambda'. Only then, the lambda expression
may be stored as a function value of a symbol with `fset', passed to
`funcall' or `mapcar', etc. The first argument, of the form
(PATTERN...) also accepts the usual &optional and &rest keywords
accepted in lambda expressions arglist, but every formal element can be
any pattern accepted by `pcase' (a mere variable name being but a
special case of it).
PATTERN should take the same form as a `pcase' pattern.
A given subpattern inside PATTERN might not match values (equality) or
even types, except for each of its subsequences, which *have* to
exist, have the right type, and be in the right place.
DOCSTRING is an optional documentation string just as in `lambda'.
Note that each PATTERN that is a special `pcase' pattern will get an
automatically assigned name: you may want to put
\\(fn YOUR ARGLIST (AS YOU INTENDED)) so to reflect your patterns.
INTERACTIVE, should as well be a call to the function `interactive'.
It may be omitted.
BODY should be the usual list of Lisp expressions `lambda' takes as
lasts arguments.
\(fn (PATTERN...) [DOCSTRING] [INTERACTIVE] BODY)"
#+END_SRC
As I never saw pcase-lambda before and this was the first time I see
anything about it, here a sample of the process I went trough:
C-h f pcase-lambda RET => (pcase-lambda LAMBDA-LIST &rest BODY)
Okay, so there’s only one pattern, so it’s not pattern matching (as its
name might wrongly suggest), like in OCaml “function” operator, it’s
simple destructuring, exactely like `cl-destructuring-bind', but richer.
Also: no “docstring”? no “interactive”? really? doesn’t `pcase-lambda'
happen to work by translating to a lambda? does it override docstrings
(that might make sense, so to replace the arglist in help by the pcase
pattern) and interactiveness (that doesn’t make sense at all: so we
can’t define after pcase-lambda a pcase-defun and pcase-defmacro (wait,
this one is already occupied… it should have been a different name then:
this has gone too far)?)?
let’s try:
#+BEGIN_SRC emacs-lisp
(global-set-key (kbd "C-c c c c")
(pcase-lambda (a `(,b ,c))
"test"
(interactive)
(insert ?2)))
#+END_SRC
Then “C-c c c c”, actually inserts 2.
C-h k C-c c c c => the docstring is “test”.
So these must be implicitly considered as inside “body”… that doesn’t
make really sense: even `lambda' explictly tells about them, while not
recommanding against not using docstring in anonymous function.
Docstring:
> Like ‘lambda’ but allow each argument to be a pattern.
> I.e. accepts the usual &optional and &rest keywords, but every
> formal argument can be any pattern accepted by ‘pcase’ (a mere
> variable name being but a special case of it).
Oh, does that mean I can, like cl-destructuring-bind, put &optional and
&rest wherever I want in any subpattern? So then pcase is strictly a
superset of cl-destructuring-bind: how sad one is not implemented upon
the other, then (cl-destructuring-bind ought to have a no-error function
so that to be usable to build something upon it).
#+BEGIN_SRC emacs-lisp
(pcase-lambda (a (b c)) c)
;; => pcase--macroexpand: Unknown a pattern: (a (b c))
(pcase (list 1 (list 2 3)) ((a (b c)) c))
;; => pcase--macroexpand: Unknown a pattern: (a (b c))
;; Oh, I recall, pcase behaves differently than normal
;; pattern-matching, I must quote everything!
(pcase-lambda '(a (b c)) c)
;; => pcase--macroexpand: Unknown a pattern: (a (b c))
;; Uh, isn’t ' a pattern in pcase? It errs out just the same!
(pcase '(1 (2 3)) ('(a (b c)) t)) ; => nil ; But… why aren’t they
; behaving the same? Why
; don’t I get an error?
;; Oh I recall! I must use “`”:
(pcase '(1 (2 3)) (`(,a (,b ,c)) t)) ; => t (It Works!™)
So:
(pcase-lambda `(,a (,b ,c)) c) ; => Wrong type argument: symbolp, (\, a)
;; Uh, isn’t that the correct way to use pcase?
;; Let’s go back before, when it unexpectedly didn’t err, wasn’t I
;; right?
(pcase '(a (b c)) ('(a (b c)) t)) ; => t (so indeed, I was right)
(pcase 'a ('a t)) ; => t (indeed, when you quote you compare symbols,
; not values (nor bind anything))
;; So let’s try the simplest case:
(pcase-lambda 'a a) ; => (lambda (quote a) a)
;; Oh, if I’m right, that “quote” isn’t a quotation, but an argument
((lambda (quote a) a) 1 2) ; => 2 (it seems so)
((lambda (quote a) a) 'a)
;; => Wrong number of arguments: (lambda (quote a) a), 1
;; it *is* so
;; Then, if I’m right, the correct usage is:
(pcase-lambda (a) a) ; => (lambda (a) a) ; okay it returns clean
; lambdas if possible
(pcase-lambda (a (2 3)) a)
;; => (lambda (a arg0) (let nil a))
;; ah, I was wrong, nevermind (why this useless `let nil'?). Btw, may I
;; suggest an argument name such as `list' instead of `arg0' that would
;; indicate type, as it is traditional in lisp (and only number list0,
;; list1, etc. if there are several of them)
((pcase-lambda (a '(2 3)) a) 1 (list 2 3))
;; => Invalid function: (pcase-lambda (a (quote (2 3)) a))
;; oh, there must be a special elisp-related reason why even if it does
;; return a lambda it can’t be used right away (maybe because it’s a
;; lisp-2?). Since `lambda' doc says it’s “self-quoting” and “may be
;; used as a function”, and that’s not true the same way here, it should
;; be said.
(funcall (pcase-lambda (a '(2 3)) a) 1 (list 2 3))
=> 1
;; Okay so since `lambda' docstring takes the time to say it works with
;; `funcall' and `mapcar', then probably `pcase-lambda' should too, so
;; an example of how to properly use it comes immediatly to mind.
(funcall (pcase-lambda (a '(2 3)) a) 1 (list 1 1))
;; Okay it’s not normal, it should give an error, or returns nil, I think.
(funcall (pcase-lambda (a '(b c)) c) 1 '(2 3)) ; let’s see what’s wrong
;; => Symbol’s value as variable is void: c
;; c isn’t bound?
;; Maybe quoting, again?
(funcall (pcase-lambda (a `(,b ,c)) c) 1 '(2 3)) ; => 3 (yes, quoting)
;; Let’s try again not to match:
(funcall (pcase-lambda (`(1 ,b 3)) a) 2)
;; => let*: Wrong type argument: listp, 2
;; Cool! *Now* it gives errors!
(funcall (pcase-lambda (`(1 ,b 3)) b) '(2))
;; => nil (okay… I don’t understand)
(funcall (pcase-lambda (`(1 ,b 3)) b) '(1 2 4))
;; => 2 (mmmh… seems lazy on arity and eq-uality… but picky on types)
(mapcar (pcase-lambda (`(1 (2 ,c 4 . 5))) c)
'((1 (2 3 4 . 5))
(1 (2))
(1 (2 3 4 5 6 . 7))))
;; => (2 nil) (indeed, it doesn’t give a fuck about arity)
(funcall (pcase-lambda (`(1 (2 ,c 4 . 5))) c) '(1 (2 . 3)))
;; => let*: Wrong type argument: listp, 3
;; But it want sequences to be the right type
(funcall (pcase-lambda (`(1 (2 ,c 4 . 5))) c) '(1 (2 3 . 4)))
;; => let*: Wrong type argument: listp, 4
;; Even when it doesn’t need to, apparently, so it’s not even laziness
(funcall (pcase-lambda (`(1 (2 ,c (4 5)))) c) '(1 (2 3))) ; => 3
(funcall (pcase-lambda (`(1 (2 ,c (4 5)))) c) '(1 (2 3 [4 5])))
;; => let*: Wrong type argument: listp, [4 5]
;; Yeah, sequences types, only that (it should have used “elt”, so it
;; would have always worked (you then only need to have the same
;; sequences tree structure)
;; let’s try out how that acts on arglist features
(funcall (pcase-lambda (a `(&rest ,rest)) rest) 1 2 3)
;; => Wrong number of arguments: (lambda (a arg0) (let* ((x (car
;; arg0)) (x (cdr arg0)) (x (car x)) (x (cdr x))) (let ((rest x))
;; rest))), 3
;; Ah indeed, to do that it would be:
(funcall (pcase-lambda (a &rest rest) rest) 1 2 3) ; => (2 3)
;; yes &rest works
;; So, I want, with correct args:
(funcall (pcase-lambda (a `(&rest ,rest)) rest) 1 '(2 3)) ; => 3
;; UH???
(funcall (pcase-lambda (a `(,b ,c &rest ,rest)) rest) 1 '(2 3 4 5 6 7))
;; => 5 (okay something strange is going)
(funcall (pcase-lambda (a `(,b ,c &optional ,opt)) opt) 1 '(2 3 4))
(funcall (pcase-lambda (a `(,b ,c &optional ,opt)) opt) 1 '(2 3))
;; => nil => nil (what?)
(funcall (pcase-lambda (a `(,b ,c &optional ,opt)) opt) 1 '(2 3 4 5))
;; => 5 (there’s one argument too much)
;; Don’t say me &optional is matched as an argument?
(funcall (pcase-lambda (a `(,b ,c &optional ,opt)) (list b c opt))
1 '(2 3 4 5)) ; => (2 3 5)
;; Is seems to >< so in the end it doesn’t work?
(funcall (pcase-lambda (a &optional ,opt) (cons a opt))
1 '(2 3 4 5))
;; => pcase--macroexpand: Unknown , pattern: (\, opt)
(funcall (pcase-lambda (a &optional opt) (cons a opt))
1 2) ; => (1 . 2)
(funcall (pcase-lambda (a &optional opt) (cons a opt))
1) ; => (1)
;; Isn’t behavior not supposed to change depending on nesting?
(apply (pcase-lambda (a (b (c))) (cons a c)) '(a (b (c))))
;; => pcase--macroexpand: Unknown b pattern: (b (c))
;; It seems it becomes real `pcase' only from second level:
(apply (pcase-lambda (a `(,b (,c))) (cons a c)) '(a (b (c))))
;; => (a . c)
;; So first level is what normal lambda (or destructuring-bind) does,
;; that looks like real pattern matching that look like the matched
;; data, like in ocaml, haskell, etc. and second level is pcase syntax…
#+END_SRC
next prev parent reply other threads:[~2018-10-29 18:49 UTC|newest]
Thread overview: 387+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-16 20:26 The poor state of documentation of pcase like things Alan Mackenzie
2015-12-16 20:53 ` Kaushal Modi
2015-12-17 16:34 ` John Wiegley
2015-12-17 19:22 ` Kaushal Modi
2015-12-17 21:16 ` Phillip Lord
2015-12-17 21:56 ` Drew Adams
2015-12-17 22:22 ` Phillip Lord
2015-12-18 7:15 ` Eli Zaretskii
2015-12-18 9:12 ` Rasmus
2015-12-18 9:21 ` Eli Zaretskii
2015-12-18 9:57 ` Rasmus
2015-12-18 10:13 ` David Kastrup
2015-12-18 10:47 ` Eli Zaretskii
2015-12-18 16:44 ` Phillip Lord
2015-12-18 17:17 ` Eli Zaretskii
2015-12-18 17:24 ` David Kastrup
2015-12-18 18:47 ` Eli Zaretskii
2015-12-19 11:23 ` Eli Zaretskii
2015-12-19 11:39 ` David Kastrup
2015-12-19 12:15 ` Eli Zaretskii
2015-12-19 20:35 ` Phillip Lord
2015-12-19 20:58 ` Eli Zaretskii
2015-12-19 22:23 ` Phillip Lord
2015-12-20 3:38 ` Eli Zaretskii
2015-12-20 22:54 ` Phillip Lord
2015-12-20 14:16 ` Michael Heerdegen
2015-12-18 12:23 ` Marcin Borkowski
2015-12-18 10:30 ` Phillip Lord
2015-12-18 12:21 ` Marcin Borkowski
2015-12-22 5:20 ` John Wiegley
2015-12-17 21:26 ` Alan Mackenzie
2015-12-17 23:34 ` John Wiegley
2015-12-18 7:16 ` Eli Zaretskii
2015-12-19 15:31 ` Michael Heerdegen
2015-12-22 5:25 ` John Wiegley
2015-12-22 13:16 ` Michael Heerdegen
2015-12-18 0:42 ` John Wiegley
2015-12-18 4:07 ` Richard Stallman
2015-12-18 10:39 ` Phillip Lord
2015-12-19 15:14 ` Michael Heerdegen
2015-12-19 19:23 ` Phillip Lord
2015-12-19 21:09 ` Michael Heerdegen
2015-12-19 21:57 ` Phillip Lord
2015-12-20 5:13 ` Richard Stallman
2015-12-20 9:25 ` Phillip Lord
2015-12-21 5:04 ` Richard Stallman
2015-12-21 10:15 ` Phillip Lord
2015-12-22 5:18 ` John Wiegley
2015-12-20 13:45 ` Michael Heerdegen
2015-12-20 13:33 ` Michael Heerdegen
2015-12-20 18:51 ` Phillip Lord
2015-12-24 17:46 ` Michael Heerdegen
2015-12-24 17:51 ` John Wiegley
2015-12-24 19:10 ` Michael Heerdegen
2015-12-19 19:24 ` Phillip Lord
2015-12-18 8:55 ` Eli Zaretskii
2015-12-19 15:18 ` Michael Heerdegen
2015-12-22 5:22 ` John Wiegley
2015-12-19 15:55 ` Michael Heerdegen
2015-12-19 17:08 ` Eli Zaretskii
2015-12-19 17:19 ` Eli Zaretskii
2015-12-19 21:03 ` Michael Heerdegen
2015-12-19 17:40 ` Michael Heerdegen
2015-12-22 5:21 ` John Wiegley
2015-12-19 15:44 ` Michael Heerdegen
2015-12-19 17:02 ` Eli Zaretskii
2015-12-19 20:58 ` Michael Heerdegen
2015-12-22 5:28 ` John Wiegley
2015-12-19 20:31 ` Phillip Lord
2015-12-19 21:16 ` Michael Heerdegen
2015-12-19 22:11 ` Phillip Lord
2015-12-20 12:45 ` Michael Heerdegen
2015-12-24 5:49 ` Richard Stallman
2015-12-24 6:15 ` John Wiegley
2015-12-25 5:49 ` Richard Stallman
2015-12-25 14:59 ` Michael Heerdegen
2015-12-25 16:55 ` John Wiegley
2015-12-26 6:13 ` Richard Stallman
2015-12-26 17:10 ` Michael Heerdegen
2015-12-26 20:52 ` Aaron Ecay
2015-12-26 23:17 ` Michael Heerdegen
2016-01-01 7:57 ` Eli Zaretskii
2016-01-01 17:46 ` John Wiegley
2016-01-01 18:39 ` David Kastrup
2016-01-01 19:05 ` Daniel Colascione
2016-01-02 8:16 ` Eli Zaretskii
2016-01-02 8:35 ` David Kastrup
2016-01-03 0:19 ` Michael Heerdegen
2016-01-03 2:47 ` Drew Adams
2016-01-03 3:21 ` Michael Heerdegen
2016-01-03 3:46 ` Drew Adams
2016-01-03 5:17 ` Michael Heerdegen
2016-01-03 3:45 ` Eli Zaretskii
2016-01-03 4:21 ` Michael Heerdegen
2016-01-03 9:13 ` David Kastrup
2016-01-03 16:52 ` Clément Pit--Claudel
2016-01-04 1:28 ` Michael Heerdegen
2016-01-03 15:29 ` Eli Zaretskii
2016-01-04 2:05 ` Michael Heerdegen
2016-01-03 9:03 ` David Kastrup
2016-01-04 2:08 ` Michael Heerdegen
2016-01-04 22:05 ` John Wiegley
2016-01-03 0:41 ` Dmitry Gutov
2016-01-03 1:07 ` Lars Magne Ingebrigtsen
2016-01-03 1:21 ` Dmitry Gutov
2016-01-03 2:49 ` Drew Adams
2016-01-03 10:49 ` David Kastrup
2016-01-03 1:32 ` Michael Heerdegen
2016-01-03 2:48 ` Drew Adams
2016-01-03 3:11 ` Noam Postavsky
2016-01-03 3:18 ` Dmitry Gutov
2016-01-03 3:55 ` John Wiegley
2016-01-03 3:45 ` Drew Adams
2016-01-03 3:47 ` Eli Zaretskii
2016-01-03 4:08 ` Dmitry Gutov
2016-01-03 9:02 ` David Kastrup
2016-01-03 13:33 ` Dmitry Gutov
2016-01-03 14:07 ` David Kastrup
2016-01-03 14:10 ` Daniel Colascione
2016-01-03 14:50 ` David Kastrup
2016-01-03 14:56 ` Daniel Colascione
2016-01-03 14:57 ` Dmitry Gutov
2016-01-03 15:15 ` David Kastrup
2016-01-03 15:21 ` Dmitry Gutov
2016-01-03 15:52 ` David Kastrup
2016-01-03 15:59 ` Dmitry Gutov
2016-01-03 17:15 ` David Kastrup
2016-01-03 17:52 ` Dmitry Gutov
2016-01-03 18:17 ` David Kastrup
2016-01-04 2:34 ` Michael Heerdegen
2016-01-04 6:19 ` Drew Adams
2016-01-04 22:07 ` John Wiegley
2016-01-04 15:52 ` Eli Zaretskii
2018-10-23 13:04 ` Replace trivial pcase occurrences in the Emacs sources (was: The poor state of documentation of pcase like things.) Michael Heerdegen
2018-10-23 14:43 ` Clément Pit-Claudel
2018-10-23 14:46 ` Replace trivial pcase occurrences in the Emacs sources Michael Heerdegen
2018-10-23 14:57 ` Clément Pit-Claudel
2018-10-23 15:16 ` Michael Heerdegen
2018-10-23 15:07 ` Noam Postavsky
2018-10-23 15:24 ` Michael Heerdegen
2018-10-23 15:31 ` Noam Postavsky
2018-10-24 13:15 ` Michael Heerdegen
2018-10-23 15:17 ` Replace trivial pcase occurrences in the Emacs sources (was: The poor state of documentation of pcase like things.) Eli Zaretskii
2018-10-23 17:14 ` Replace trivial pcase occurrences in the Emacs sources Stefan Monnier
2018-10-23 17:24 ` Michael Heerdegen
2018-10-23 18:12 ` Stefan Monnier
2018-10-23 19:52 ` pcase vs. case (where it could also be used) [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Garreau, Alexandre
2018-10-23 20:19 ` Stefan Monnier
2018-10-23 22:24 ` Garreau, Alexandre
2018-10-24 15:03 ` Replace trivial pcase occurrences in the Emacs sources Eli Zaretskii
2018-10-24 15:30 ` Michael Heerdegen
2018-10-24 15:40 ` Eli Zaretskii
2018-10-24 15:48 ` Michael Heerdegen
2018-10-24 17:35 ` Eli Zaretskii
2018-10-24 17:55 ` Michael Heerdegen
2018-10-24 18:32 ` Eli Zaretskii
2018-10-24 18:47 ` Garreau, Alexandre
2018-10-27 15:19 ` Michael Heerdegen
2018-10-27 16:56 ` Garreau, Alexandre
2018-10-27 22:37 ` Dmitry Gutov
2018-10-28 0:21 ` Michael Heerdegen
2018-10-28 2:07 ` Garreau, Alexandre
2018-10-28 2:44 ` pcase ` meaning [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Garreau, Alexandre
2018-10-28 4:45 ` How other pattern-matching lisps do [Was: Re: pcase ` meaning [Was: Re: Replace trivial pcase occurrences in the Emacs sources]] Garreau, Alexandre
2018-10-28 13:44 ` Stefan Monnier
2018-10-28 17:57 ` Garreau, Alexandre
2018-10-28 23:16 ` Michael Heerdegen
2018-10-28 22:54 ` pcase ` meaning [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Michael Heerdegen
2018-10-28 23:09 ` Garreau, Alexandre
2018-10-28 23:57 ` Michael Heerdegen
2018-10-29 10:22 ` Garreau, Alexandre
2018-10-29 21:33 ` Michael Heerdegen
2018-10-29 23:00 ` pcase ` meaning Garreau, Alexandre
2018-10-29 23:57 ` Michael Heerdegen
2018-10-30 0:17 ` Garreau, Alexandre
2018-10-30 1:40 ` Michael Heerdegen
2018-10-30 16:05 ` Yuri Khan
2018-10-29 17:26 ` pcase ` meaning [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Clément Pit-Claudel
2018-10-30 0:27 ` pcase ` meaning Garreau, Alexandre
2018-10-30 13:14 ` Stefan Monnier
2018-10-31 23:13 ` Garreau, Alexandre
2018-11-01 13:22 ` Clément Pit-Claudel
2018-11-01 14:11 ` Garreau, Alexandre
2018-10-29 3:26 ` Replace trivial pcase occurrences in the Emacs sources Eli Zaretskii
2018-10-29 21:46 ` Michael Heerdegen
2018-10-30 0:36 ` What `case' have done you? [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Garreau, Alexandre
2018-10-30 1:45 ` Michael Heerdegen
2018-10-30 6:31 ` Replace trivial pcase occurrences in the Emacs sources Eli Zaretskii
2018-10-30 15:47 ` Michael Heerdegen
2018-10-30 17:29 ` Eli Zaretskii
2018-10-30 22:09 ` Michael Heerdegen
2018-10-31 15:59 ` Eli Zaretskii
2018-10-31 19:37 ` Stefan Monnier
2018-10-31 20:31 ` Michael Heerdegen
2018-10-31 23:33 ` Garreau, Alexandre
2018-10-31 23:44 ` Garreau, Alexandre
2018-10-31 23:58 ` Michael Heerdegen
2018-11-01 4:15 ` Eli Zaretskii
2018-11-01 12:30 ` Stefan Monnier
2018-11-01 14:14 ` Michael Heerdegen
2018-11-01 14:18 ` Noam Postavsky
2018-11-01 14:20 ` Michael Heerdegen
2018-11-05 1:43 ` Michael Heerdegen
2018-11-05 1:46 ` Michael Heerdegen
2018-11-05 16:06 ` Eli Zaretskii
2018-11-06 1:04 ` Michael Heerdegen
2018-11-25 20:36 ` Michael Heerdegen
2018-11-25 20:42 ` Nicolas Goaziou
2018-11-25 21:46 ` Michael Heerdegen
2018-11-26 3:35 ` Eli Zaretskii
2018-11-26 20:57 ` Michael Heerdegen
2018-11-26 22:05 ` Nicolas Goaziou
2018-11-27 5:35 ` Eli Zaretskii
2018-10-24 15:47 ` Clément Pit-Claudel
2018-10-24 16:00 ` Eli Zaretskii
2018-10-24 19:00 ` Clément Pit-Claudel
2018-10-24 19:09 ` Eli Zaretskii
2018-10-24 16:12 ` Alan Mackenzie
2018-10-24 20:52 ` Stefan Monnier
2018-10-25 7:17 ` Stephen Berman
2018-10-25 14:47 ` Eli Zaretskii
2018-10-25 15:32 ` Stefan Monnier
2018-10-26 15:34 ` Stefan Monnier
2018-10-27 17:48 ` Garreau, Alexandre
2018-10-24 4:51 ` Richard Stallman
2018-10-24 8:34 ` Joost Kremers
2018-10-24 12:37 ` Stefan Monnier
2018-10-24 13:08 ` Daniel Pittman
2018-10-24 14:35 ` Stefan Monnier
2018-10-24 13:03 ` pcase pattern syntax (was: Replace trivial pcase occurrences in the Emacs sources) Stefan Monnier
2018-10-26 7:16 ` Joost Kremers
2018-10-24 10:16 ` Replace trivial pcase occurrences in the Emacs sources João Távora
2018-10-24 13:05 ` Stefan Monnier
2018-10-25 3:11 ` Richard Stallman
2018-10-25 12:42 ` Stefan Monnier
2018-10-25 23:53 ` Andy Moreton
2018-10-26 14:59 ` Stefan Monnier
2018-10-26 15:44 ` Garreau, Alexandre
2018-10-27 12:09 ` Andy Moreton
2018-10-28 21:44 ` Stefan Monnier
2018-10-29 13:01 ` Alan Mackenzie
2018-10-29 13:28 ` Stefan Monnier
2018-10-29 13:47 ` Alan Mackenzie
2018-10-29 21:08 ` Stefan Monnier
2018-10-29 21:53 ` Michael Heerdegen
2018-10-29 23:12 ` Eric Abrahamsen
2018-10-29 23:18 ` Eric Abrahamsen
2018-10-30 0:50 ` `pcase'/`case' implementation [Was: Re: Replace trivial pcase occurrences in the Emacs sources] Garreau, Alexandre
2018-10-30 13:07 ` Replace trivial pcase occurrences in the Emacs sources Stefan Monnier
2018-10-30 23:30 ` Eric Abrahamsen
2018-11-01 0:16 ` Garreau, Alexandre
2018-10-30 12:30 ` Stefan Monnier
2018-10-30 17:16 ` Stefan Monnier
2018-10-30 19:03 ` Eli Zaretskii
2018-10-30 19:21 ` Stefan Monnier
2018-10-30 19:54 ` Eli Zaretskii
2018-10-30 20:44 ` Stefan Monnier
2018-10-31 15:57 ` Eli Zaretskii
2018-10-31 19:35 ` Stefan Monnier
2018-11-01 1:40 ` Garreau, Alexandre
2018-11-01 4:10 ` Eli Zaretskii
2018-11-01 5:21 ` Garreau, Alexandre
2018-11-01 18:07 ` Eli Zaretskii
2018-11-01 19:35 ` Garreau, Alexandre
2018-11-01 19:49 ` TEIRLLM
2018-11-03 2:53 ` Richard Stallman
2018-11-04 11:35 ` Nix
2018-11-04 12:40 ` Garreau, Alexandre
2018-11-01 19:51 ` TEIRLLM
2018-11-01 20:02 ` Eli Zaretskii
2018-10-30 20:04 ` Dmitry Gutov
2018-10-30 20:46 ` Stefan Monnier
2018-10-31 13:41 ` Dmitry Gutov
2018-10-31 13:52 ` Stefan Monnier
2018-10-31 15:50 ` Eli Zaretskii
2018-10-31 16:05 ` Dmitry Gutov
2018-10-31 16:13 ` Eli Zaretskii
2018-10-31 16:27 ` Dmitry Gutov
2018-10-31 16:33 ` Dmitry Gutov
2018-10-31 16:54 ` Eli Zaretskii
2018-10-31 16:58 ` Dmitry Gutov
2018-10-31 16:52 ` Eli Zaretskii
2018-10-31 18:55 ` Michael Heerdegen
2018-10-31 19:23 ` Eli Zaretskii
2018-10-31 19:50 ` Michael Heerdegen
2018-10-31 20:05 ` Eli Zaretskii
2018-10-31 20:41 ` Michael Heerdegen
2018-11-01 4:14 ` Eli Zaretskii
2018-10-31 20:06 ` Stefan Monnier
2018-10-31 20:12 ` Eli Zaretskii
2018-10-31 17:48 ` Clément Pit-Claudel
2018-10-31 18:11 ` Eli Zaretskii
2018-10-31 18:28 ` Clément Pit-Claudel
2018-10-31 18:33 ` Eli Zaretskii
2018-10-31 19:00 ` Yuri Khan
2018-10-31 19:20 ` Eli Zaretskii
2018-11-01 0:11 ` Dmitry Gutov
2018-10-31 19:21 ` Clément Pit-Claudel
2018-10-31 19:29 ` Eli Zaretskii
2018-10-31 19:31 ` Clément Pit-Claudel
2018-10-31 20:36 ` Eli Zaretskii
2018-11-01 0:13 ` Dmitry Gutov
2018-11-01 1:31 ` Garreau, Alexandre
2018-10-31 20:03 ` Stefan Monnier
2018-11-01 0:07 ` Dmitry Gutov
2018-11-01 1:34 ` Garreau, Alexandre
2018-11-03 13:15 ` Eli Zaretskii
2018-10-30 1:15 ` Garreau, Alexandre
2018-10-30 6:17 ` Eli Zaretskii
2018-10-30 12:15 ` Stefan Monnier
2018-10-30 12:38 ` Eli Zaretskii
2018-10-30 15:00 ` Stefan Monnier
2018-10-30 17:00 ` Eli Zaretskii
2018-10-30 17:27 ` Stefan Monnier
2018-10-30 17:36 ` Eli Zaretskii
2018-10-30 18:09 ` Stefan Monnier
2018-10-30 18:42 ` Eli Zaretskii
2018-10-30 18:58 ` Stefan Monnier
2018-10-31 12:08 ` Alan Mackenzie
2018-10-31 12:33 ` Stefan Monnier
2018-10-31 15:47 ` Eli Zaretskii
2018-10-31 16:07 ` Alan Mackenzie
2018-10-31 16:20 ` Eli Zaretskii
2018-11-01 8:36 ` Achim Gratz
2018-11-01 10:36 ` Alan Mackenzie
2018-11-01 12:29 ` Achim Gratz
2018-11-01 14:19 ` Michael Heerdegen
2018-11-03 13:16 ` Eli Zaretskii
2018-11-03 15:45 ` Michael Heerdegen
2018-11-03 16:25 ` Eli Zaretskii
2018-11-03 17:12 ` Michael Heerdegen
2018-11-03 17:55 ` Eli Zaretskii
2018-11-03 22:22 ` Michael Heerdegen
2018-11-04 14:16 ` Eli Zaretskii
2018-11-06 0:00 ` Michael Heerdegen
2018-11-06 3:30 ` Eli Zaretskii
2018-11-03 13:13 ` Eli Zaretskii
2018-10-30 18:24 ` Alan Mackenzie
2018-10-30 14:16 ` Andy Moreton
2018-10-30 15:05 ` Clément Pit-Claudel
2018-10-30 18:14 ` Alan Mackenzie
2018-10-30 19:56 ` Clément Pit-Claudel
2018-10-31 0:08 ` Andy Moreton
2018-10-31 3:19 ` Stefan Monnier
2018-10-31 16:23 ` Clément Pit-Claudel
2018-11-01 14:44 ` Andy Moreton
2018-11-01 15:28 ` Clément Pit-Claudel
2018-10-30 17:22 ` Michael Heerdegen
2018-10-30 17:31 ` Stefan Monnier
2018-10-30 23:08 ` Michael Heerdegen
2018-10-31 3:09 ` Stefan Monnier
2018-11-05 2:01 ` Michael Heerdegen
2018-11-05 4:49 ` Stefan Monnier
2018-11-05 23:06 ` Michael Heerdegen
2018-10-30 18:09 ` Alan Mackenzie
2018-10-30 18:17 ` Stefan Monnier
2018-10-30 19:00 ` Alan Mackenzie
2018-10-31 0:21 ` Andy Moreton
2018-10-29 14:47 ` Andy Moreton
2018-10-29 18:49 ` Garreau, Alexandre [this message]
2018-10-30 23:34 ` Van L
2018-10-31 3:14 ` Stefan Monnier
2018-10-23 17:22 ` John Wiegley
2018-10-23 17:16 ` Stefan Monnier
2016-01-04 2:54 ` The poor state of documentation of pcase like things Michael Heerdegen
2016-01-03 15:26 ` Eli Zaretskii
2016-01-03 20:02 ` John Wiegley
2016-01-02 1:15 ` Richard Copley
2016-01-02 3:50 ` Drew Adams
2016-01-02 3:51 ` Drew Adams
[not found] ` <<83y4c9ag06.fsf@gnu.org>
2016-01-01 15:18 ` Drew Adams
2015-12-27 2:53 ` Richard Stallman
2015-12-16 21:01 ` Drew Adams
2015-12-17 13:59 ` Phillip Lord
2015-12-17 17:06 ` Alan Mackenzie
2015-12-19 15:26 ` Michael Heerdegen
2015-12-19 16:04 ` Michael Heerdegen
2015-12-19 19:29 ` Phillip Lord
2015-12-19 21:14 ` Michael Heerdegen
2015-12-19 22:06 ` Phillip Lord
2015-12-19 16:47 ` Eli Zaretskii
2015-12-19 17:24 ` Michael Heerdegen
2015-12-22 5:25 ` John Wiegley
2015-12-19 18:30 ` Alan Mackenzie
2015-12-19 20:42 ` Michael Heerdegen
2015-12-19 22:25 ` Alan Mackenzie
2015-12-20 13:11 ` Michael Heerdegen
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=874ld4twpv.fsf_-_@portable.galex-713.eu \
--to=galex-713@galex-713.eu \
--cc=andrewjmoreton@gmail.com \
--cc=emacs-devel@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.