From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Installing cond* in core Date: Sun, 04 Feb 2024 09:12:40 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2055"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: acm@muc.de, emacs-devel@gnu.org To: Richard Stallman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Feb 04 15:13:38 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rWdFZ-0000NS-So for ged-emacs-devel@m.gmane-mx.org; Sun, 04 Feb 2024 15:13:37 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rWdEn-0001i3-SJ; Sun, 04 Feb 2024 09:12:49 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rWdEl-0001he-Sc for emacs-devel@gnu.org; Sun, 04 Feb 2024 09:12:47 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rWdEk-00082t-1G; Sun, 04 Feb 2024 09:12:47 -0500 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 817154413FD; Sun, 4 Feb 2024 09:12:43 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1707055962; bh=lLjwKhdPgN7rT4R3Y/+zv6rV3zxiwaOkHyGYsKUn2DM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=Ixm2TYzvbW+Yn4tdS6+/ybDYTzNNVyW3fOdhVJ9Ba6vUa22HgssyA1XeQMDH0FJXw Zzh2VSEaZpq5Wufx8eiZ9ts1YHP+bBT/+sou6GN06Qort222UeMHkaTMmAq28EG14J 5RM1mDMq6OXD6EwrhiesWssA8v4rhdwTmIsYMQ3cwmEd0ZQXf4wNCM9NxWsEI6/0Ow oE4WRy2Y2OJgGKPlyg2bwIAPvQSuNDG63zHt0yFMi1ULy1yURPXUnV197N7vE6lkH4 2qvj3vb8BXmu8OvRvnin6Wp5NE0E8BS1C2wDckPmcgE1vRIYEBF0YqcsE/9zm6bqoO oQhjorVDQKXKw== Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 2C99E440058; Sun, 4 Feb 2024 09:12:42 -0500 (EST) Original-Received: from pastel (69-165-153-17.dsl.teksavvy.com [69.165.153.17]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B257C12051B; Sun, 4 Feb 2024 09:12:41 -0500 (EST) In-Reply-To: (Richard Stallman's message of "Sat, 03 Feb 2024 23:47:44 -0500") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:315865 Archived-At: > > AFAICT the implementation of `match*` is not designed to handle the task > > of matching against several patterns to select which branch to use. > I do not follow you. Could you please describe the issue more concretely? > Pehraps wiht an example Then I could judge whether this is grave. When matching EXP against patterns PAT1..PATn, Pcase is careful to share the common part of those patterns in the resulting code, so that the resulting code will not test (consp EXP) more than once, for example. Try (cond* ((match* `(a1 . ,b1) EXP) ...) ((match* `(a2 . ,b2) EXP) ...)) and see how, before testing `a2`, it re-tests whether EXP is `consp` and it re-extracts its `car`, even though it already just did those very same operations. Of course, the same happens with my PoC `pcase*` addition to `cond*`. But not if you do (pcase EXP (`(a1 . ,b1) ...) (`(a2 . ,b2) ...)). Stefan