Subject: 24.5; Please improve documentation for `pcase'
From: Philipp Stephani <[email-masked]>
To: [email-masked]
Date: Sun, 24 May 2015 12:34:06 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Quoting the documentation of `pcase', some comments inline.

   Perform ML-style pattern matching on EXP.

Users are probably not aware what 'ML-style pattern matching' is.
Please add an introduction without referring to ML.

   CASES is a list of elements of the form (UPATTERN CODE...).

Please document the motivation for the existence and nomenclature or
UPatterns and QPatterns.

    UPatterns can take the following forms:
      _		matches anything.
      SELFQUOTING	matches itself.  This includes keywords,
                        numbers, and strings.

Please add exhaustive information about all the cases covered by the
SELFQUOTING form.  What kinds of forms does it comprise?  There is
overlap with the SYMBOL case below, which has very different semantics,
so the distinction should be made as clear as possible.  Please include
information about the very common symbols nil and t.

      SYMBOL	matches anything and binds it to SYMBOL.

Please state explicitly in which cases this form applies.  Given that _
and :foo are also symbols, it is clear that it doesn't apply to all
symbols.  Something like "all symbols except _, keywords, nil or t"?

      (or UPAT...)	matches if any of the patterns matches.
      (and UPAT...)	matches if all the patterns match.

In the `and' form, please give and example for the following very common
but non-obvious form:

(and UPAT SYMBOL)

e.g. (and (pred integerp) myvar), meaning to bind to a symbol only if
some guard expression matches.

In GNU Emacs 24.5.1 (x86_64-apple-darwin14.1.0, NS apple-appkit-1344.72)
 of 2015-04-12 on p
Configured using:
 `configure --prefix=/usr/local/Cellar/emacs/24.5
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs/24.5/share/info/emacs
 --with-file-notification=gfile --with-dbus --with-gnutls --with-rsvg
 --with-imagemagick --without-popmail --with-ns
 --disable-ns-self-contained'

Important settings:
  value of $LANG: de_DE.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:

Mark set
Sending...
Mark set [2 times]
Sending via mail...
Sending email 
Sending email done
gnutls.c: [0] (Emacs) fatal error: The TLS connection was non-properly terminated.
Sending...done

Load-path shadows:
None found.

Features:
(eieio-opt speedbar sb-image ezimage dframe find-func gnutls
network-stream starttls tls mailalias smtpmail auth-source eieio
byte-opt bytecomp byte-compile cl-extra cconv eieio-core password-cache
cus-edit cus-start cus-load wid-edit cl-loaddefs cl-lib help-mode pp
shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils warnings help-fns files-x xterm time-date
tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
ns-win tool-bar dnd fontset image regexp-opt fringe tabulated-list
newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify cocoa ns multi-tty emacs)

Memory information:
((conses 16 118129 9719)
 (symbols 48 21487 0)
 (miscs 40 54 289)
 (strings 32 20379 5134)
 (string-bytes 1 568058)
 (vectors 16 11343)
 (vector-slots 8 377405 5190)
 (floats 8 77 427)
 (intervals 56 665 100)
 (buffers 960 19))