From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: [External] : Re: Emacs 30.0 warning from `cl-pushnew' and `memql' Date: Fri, 30 Dec 2022 23:27:54 +0100 Message-ID: <874jtcttlh.fsf@dataswamp.org> References: <878ritgaty.fsf@dataswamp.org> <87o7rprvia.fsf@web.de> <87zgb913fg.fsf@dataswamp.org> <87lemscg23.fsf@dataswamp.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23022"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:hNXBENL2Zq7y7pIpSC2hGPWUNZ4= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 31 17:11:31 2022 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 1pBeSI-0005mi-Fo for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 31 Dec 2022 17:11:30 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pBeRo-0005md-S2; Sat, 31 Dec 2022 11:11:00 -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 1pBNrB-0002ZI-Jp for help-gnu-emacs@gnu.org; Fri, 30 Dec 2022 17:28:05 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pBNr9-0004uw-OJ for help-gnu-emacs@gnu.org; Fri, 30 Dec 2022 17:28:05 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1pBNr6-0008aT-IJ for help-gnu-emacs@gnu.org; Fri, 30 Dec 2022 23:28:00 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never 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.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sat, 31 Dec 2022 11:10:47 -0500 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-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:142065 Archived-At: Drew Adams wrote: >>> `cl-pushnew' should be an emulation of Common Lisp >>> `pushnew' - neither more nor less. >>> >>> I'm not sure what your point is, but `pushnew' defaults to >>> using `eql', not `equal' (or `string='). So if you want >>> `pushnew' to compare strings then yes, you should pass >>> a predicate such as `string=' (or `equal'). >> >> It's much better if the function itself checks what type >> the value is of and pick a suitable function to compare >> from that, then the user don't have to think about that >> at all. > > Again, `cl-case` came from CL `case' (and that came from > other Lisps). Yes, but I say that with respect to that particular function, if it isn't to be modified for whatever external reasons that's another discussion you of course are free to carry on with ... > Checking the "type the value is of" is problematic. For one > thing, you might well want to control the type The function, rather than you, can do this - and pretty easily so: (when (stringp arg) (setq pred #'string=) ) > And some values are of multiple types. E.g., nil's a symbol > and a list. And some types are subtypes of other types. E.g. > lists are sequences. All types that are comparable have a function to do that, that function is the one to be used. If they haven't, how are we to determine if they are "new" at all? Types whose values cannot be compared even to themself to determine equality - if such types exist - I don't see how they can be supported by a 'pushnew' function, really? -- underground experts united https://dataswamp.org/~incal