From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: Generic functions: Specializers like `or' or `memq'? Date: Sun, 21 Nov 2021 14:43:58 -0500 Message-ID: References: <87r1bxcg6g.fsf@web.de> <87y265aymg.fsf@posteo.net> <87ilx9hrn6.fsf@web.de> <87a6ilorh0.fsf@ericabrahamsen.net> <878ry0nce8.fsf@web.de> <87v914lorv.fsf@web.de> Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37401"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:2pxuSvggT2czZGhkRfMb0jFdiJc= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 21 20:45:38 2021 Return-path: Envelope-to: geh-help-gnu-emacs@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 1mosmQ-0009Tw-98 for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 21 Nov 2021 20:45:38 +0100 Original-Received: from localhost ([::1]:39766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mosmO-0001h3-DX for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 21 Nov 2021 14:45:36 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:58452) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mosl1-0001f6-OV for help-gnu-emacs@gnu.org; Sun, 21 Nov 2021 14:44:12 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]:37980) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mosl0-0007Qp-7a for help-gnu-emacs@gnu.org; Sun, 21 Nov 2021 14:44:11 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1moskw-0007OS-SD for help-gnu-emacs@gnu.org; Sun, 21 Nov 2021 20:44:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.248, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:134664 Archived-At: Michael Heerdegen [2021-11-07 02:48:04] wrote: > Stefan Monnier via Users list for the GNU Emacs text editor > writes: > >> (or (eql 4) integer) >> and >> (or (eql 4) (eql 5)) >> and >> (or (eql 4) (eql "hello")) > > That's not a good example for how specializers I wanted to be able to > write would look like, but I see the problem. BTW, the above problem doesn't prevent defining an `or` specializer. It just means that this specializer may not always behave quite like one might expect :-( I think a `memql` specializer would be easier and less likely to cause problems: you could just give it a priority just below that of `eql` (it may still get it wrong in that (memql true false maybe) would likely get higher priority than a specializer like `boolean` which (if we were to add such a type) would like only match `nil` and `t` and hence should ideally have higher priorty instead). Feel free to give us some concrete examples of the kinds of things you'd like to do, if you want to see what it would take to support them. Stefan