From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.devel Subject: Re: pcase: Semantics of atom QPATS Date: Sat, 16 Jun 2018 06:03:16 +0200 Message-ID: <87vaaj9y4b.fsf@web.de> References: <87tvqbjwyf.fsf@web.de> <87k1r3qro3.fsf@web.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1529121727 13381 195.159.176.226 (16 Jun 2018 04:02:07 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 16 Jun 2018 04:02:07 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jun 16 06:02:02 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fU2PW-0003CG-0h for ged-emacs-devel@m.gmane.org; Sat, 16 Jun 2018 06:01:58 +0200 Original-Received: from localhost ([::1]:50192 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fU2Rb-0008VK-Eg for ged-emacs-devel@m.gmane.org; Sat, 16 Jun 2018 00:04:07 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fU2Qz-0008VE-Dy for emacs-devel@gnu.org; Sat, 16 Jun 2018 00:03:30 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fU2Qw-0003he-Ad for emacs-devel@gnu.org; Sat, 16 Jun 2018 00:03:29 -0400 Original-Received: from mout.web.de ([212.227.17.12]:57447) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fU2Qv-0003aK-TG for emacs-devel@gnu.org; Sat, 16 Jun 2018 00:03:26 -0400 Original-Received: from drachen.dragon ([188.110.196.170]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0Lr2dj-1g8LOo3ULT-00eYnq; Sat, 16 Jun 2018 06:03:18 +0200 In-Reply-To: (Stefan Monnier's message of "Wed, 13 Jun 2018 08:52:25 -0400") X-Provags-ID: V03:K1:m8nRMKWlEchY4RjvJmiYcyOwN3sFQLSZQu0rF3dFpM6S9CPFBCR 1zecEidwV3P/zIMpZlKTeV4ZKf3zgTnfljofH5zvgksooOmh46usYUIPb5h7h+1+MOXqUmM jWcelkz7v3EFt5GcmLbiVZP1cpOJYsqlpoTdl9qMQXW+XnjaFsR+P8GHTuFecfTb5fmIfJQ bpL7ORPx68JfPoVU6nh4w== X-UI-Out-Filterresults: notjunk:1;V01:K0:9wR9kmPDRtQ=:kuUC7dlM8JJGA6mGDr5vca sZlDQVKl13AEKpk7D3HU6b3aw0/2Mu4L/8HFUUy1k3+QEVTPb2SGHwFsnzyMeO+bYaoAoYC6L YjR916KnH3ZNY8J+wYOc7SRBf7Y0GbFhbdaa39uV9UdLus/QzK+5a3Jzy8/Xg6aKcLVUZgzwD NJHWS6ck3FiKAR93NVRyzeLNjYRP+avDb6mBDvQxpXavb9YWWjdbhEdhN+aTXRgixx293ynj2 idQGXg4+6pbhWx4x3+ibgxK5gXsk3nsAtnzpt9BTQv2EakXqcPnUSCKkOtwQzkvE3MwvTCZNn f3TiHqSaMM354f8nG4zEozYOpsvk4RxVnimpoNkQ0UvnnLYuNEpAOJu3nvmPCnPMlD0uPSs7j JiAqESGlzYt8Iv3Ii3keuZrGV3ZSflhtwZ9XpjMX6pnmn0UNnvuMSZs58sxYtlQo49k0NzJDq +aX2j4FhDlLif81LiBxH2dXHME5RgiDfP5U3qDO5bVWm5NO0DA0Zf6BUs5CK5f+p248QNmVqV X3haw6s72I4FXuv3RN/fzIX2KKr0j+8iSniDdotrgA2sIW+4nbaMpSOXiwLFXHtVKoPujXELG MHi2wZhazwDf6uwjI9gygnzKV7p38AAY5MnfX5sfzkYEkYV1TW3a0s0NfTy9w3nz+Uz1b2NlX UgLttXZmQgQyJDTUXGpTlzY3vvp1E8/LsW4krufaX02Oxex1VGW1s0ZatJrTGGkvcnMth5cXD 6CVf51K8W6bAqfylVHgapSRClTmm7HsHFo5Irg3/LYULN6yOnZbWPUfPb0kgRwkdvyIRD+aF X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:226347 Archived-At: --=-=-= Content-Type: text/plain Stefan Monnier writes: > Sure. Feel free to add support for floats while you're there. Ok. Is this patch ok for emacs-26? --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Allow-floats-as-pcase-QPATS.patch >From f3088c97472e5edc84303dcf4ee4130e0eae17fa Mon Sep 17 00:00:00 2001 From: Michael Heerdegen Date: Wed, 13 Jun 2018 04:37:38 +0200 Subject: [PATCH] Allow floats as 'pcase' QPATS * lisp/emacs-lisp/pcase.el (\`): Extend semantics of QPATS to all numbers. Add a comment explaining why we disallow some atoms as QPATS. * doc/lispref/control.texi (Backquote Patterns): Update the paragraph explaining QPATS. Remove a sentence suggesting an analogy between QPATS to self-quoting objects. --- doc/lispref/control.texi | 4 +--- lisp/emacs-lisp/pcase.el | 7 +++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 34f5f57044..975ab3d075 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1090,12 +1090,10 @@ Backquote Patterns @item @var{symbol} @itemx @var{keyword} -@itemx @var{integer} +@itemx @var{number} @itemx @var{string} Matches if the corresponding element of @var{expval} is @code{equal} to the specified literal object. -Note that, aside from @var{symbol}, this is the same set of -self-quoting literal objects that are acceptable as a core pattern. @item ,@var{pattern} Matches if the corresponding element of @var{expval} diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index fa7b1de8b4..4a69244d26 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -919,7 +919,7 @@ pcase--u1 ,PAT matches if the `pcase' pattern PAT matches. SYMBOL matches if EXPVAL is `equal' to SYMBOL. KEYWORD likewise for KEYWORD. - INTEGER likewise for INTEGER. + NUMBER likewise for NUMBER. STRING likewise for STRING. The list or vector QPAT is a template. The predicate formed @@ -949,7 +949,10 @@ pcase--u1 `(and (pred consp) (app car ,(list '\` (car qpat))) (app cdr ,(list '\` (cdr qpat))))) - ((or (stringp qpat) (integerp qpat) (symbolp qpat)) `',qpat) + ((or (stringp qpat) (numberp qpat) (symbolp qpat)) `',qpat) + ;; In all other cases just raise an error so we can't break + ;; backward compatibility when adding \` support for other + ;; compounded values that are not `consp' (t (error "Unknown QPAT: %S" qpat)))) (provide 'pcase) -- 2.17.1 --=-=-= Content-Type: text/plain Michael. --=-=-=--