From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: Is there any difference between `equal' and `string=' for strings? Date: Sat, 21 Aug 2021 21:09:46 +0200 Message-ID: <87a6la4nt1.fsf@zoho.eu> References: <875yw2vxqh.fsf@mbork.pl> <87v941domi.fsf@zoho.eu> <87tujkd46u.fsf@zoho.eu> Reply-To: Emanuel Berg Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26402"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:jRYq5SLcczbgVAwF/KRxFBUML1U= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sat Aug 21 21:10:35 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 1mHWO2-0006fq-2x for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 21 Aug 2021 21:10:34 +0200 Original-Received: from localhost ([::1]:58340 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mHWO0-0007wZ-SS for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 21 Aug 2021 15:10:32 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mHWNX-0007wR-5e for help-gnu-emacs@gnu.org; Sat, 21 Aug 2021 15:10:03 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:48104) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mHWNS-0004kd-U8 for help-gnu-emacs@gnu.org; Sat, 21 Aug 2021 15:10:02 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mHWNQ-0005uw-Iv for help-gnu-emacs@gnu.org; Sat, 21 Aug 2021 21:09:56 +0200 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-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 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:132652 Archived-At: Jean Louis wrote: > Yes, that is what I meant. It is good to compare symbols > which are possibly strings if they are equal to each other. > > (setq s1 1) -> 1 > (setq s2 "1") -> "1" > > Which is also good to show the error if one of symbols is > not string: > > (string= s1 s2) eval: Wrong type argument: stringp, 1 Yes, but what you are passing here are not symbols but their _values_, however can can pass literally a symbol as well in which case that symbol's print name, i.e. its `symbol-name', is used. So for example (symbol-name 'hi) ; "hi" (string= 'hi "hi") ; t >> So that's virtually (string= "hi" "hi") only here it is >> done _by_ and not before string= (as 'hi does not evaluate >> to the string "hi", for example). > > That I don't understand, what I know is that `string=' will > evaluate symbols as strings It seems that you understand? `string=' uses, or could use at least, `symbol-name' to get the symbols print name. (let ((sym 'hi) (str "hi") ) (when (and (symbolp sym) (stringp str) ) (list (string= (symbol-name sym) str) (string= sym str) ))) ; (t t) (PS, why don't string= take &rest like `='? OTOH string= is an alias for `string-equal' and `equal' don't take &rest either ...) > and compare them, interesting is > it will accept `nil' as value: Because nil is a symbol: (symbolp nil) ; t (symbol-name nil) ; "nil" -- underground experts united https://dataswamp.org/~incal