From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Barry Fishman Newsgroups: gmane.emacs.devel Subject: Re: 7 logical-xor implementations in source tree Date: Wed, 31 Jul 2019 11:20:12 -0400 Message-ID: <7nftmmkz83.fsf@ecube.ecubist.org> References: <87tvbd9a8p.fsf@oremacs.com> <87pnm14u95.fsf@tcd.ie> <87sgqvoz5c.fsf@tcd.ie> <87d0hz2e11.fsf@tcd.ie> <5B633129-B795-4BFA-AE81-FE9FD0A24CE9@acm.org> <0edfffbb-6f5a-a6b2-334a-9000e8f2eb3e@gmail.com> <20190728080417.GA5072@ACM> <875znm3q19.fsf@mbork.pl> <20190730093651.GA5427@ACM> <7n36iny4yq.fsf@ecube.ecubist.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="104865"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jul 31 17:20:47 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hsqPH-000R8L-3U for ged-emacs-devel@m.gmane.org; Wed, 31 Jul 2019 17:20:47 +0200 Original-Received: from localhost ([::1]:41740 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hsqPF-000626-H7 for ged-emacs-devel@m.gmane.org; Wed, 31 Jul 2019 11:20:45 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54136) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hsqOv-00061z-Cx for emacs-devel@gnu.org; Wed, 31 Jul 2019 11:20:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hsqOu-0000gM-C2 for emacs-devel@gnu.org; Wed, 31 Jul 2019 11:20:25 -0400 Original-Received: from 195-159-176-226.customer.powertech.no ([195.159.176.226]:39256 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hsqOu-0000fA-50 for emacs-devel@gnu.org; Wed, 31 Jul 2019 11:20:24 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1hsqOr-000QhR-LZ for emacs-devel@gnu.org; Wed, 31 Jul 2019 17:20:21 +0200 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:1NQ0nhcyO8vYFWYOPFTToOoTvQk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:239047 Archived-At: On 2019-07-30 23:16:16 -04, Richard Stallman wrote: > Me: > > I find the iff and xor not obvious. xor seems like it should be the > > bitwise operation. > > That operation is called logxor. It goes with logior and logand. I can see keeping the Common Lisp names for things. Emacs does that with CAR and CDR. I have concerns with just replacing one set of confusing names with others that have differing semantics in other languages.. CL has AND, OR and NOT. Like CLISP, Emacs has added XOR, but (I think) with less useful semantics than CLISP's. I question whether IFF is really that clear. If you want to be mathematical, just use <=> or ===, and can be complete by defining the => implementation operator also: (defun <=> (x y) (not (xor x y))) Or: (defun => (x y) (or (not x) y) (defun <=> (x y) (and (=> x y) (=> y x)) At least mathematicians will be happy (and nix programmers). And possibly give XOR CLISP semantics: takes multiple arguments returning NIL unless just one argument is true, in which case return that argument. -- Barry Fishman