From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "Garreau\, Alexandre" Newsgroups: gmane.emacs.help Subject: Re: `when' vs. `and' / `unless' vs `or' Date: Wed, 17 Oct 2018 00:38:54 +0200 Message-ID: <87zhvdldoh.fsf@portable.galex-713.eu> References: <87o9btob5k.fsf@portable.galex-713.eu> <99393ed6-6947-4246-ad8e-b4984c776a53@default> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1539729466 19583 195.159.176.226 (16 Oct 2018 22:37:46 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 16 Oct 2018 22:37:46 +0000 (UTC) User-Agent: Gnus (5.13), GNU Emacs 25.1.1 (i686-pc-linux-gnu) Cc: help-gnu-emacs@gnu.org To: Drew Adams Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Oct 17 00:37:42 2018 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gCXy9-0004y4-3g for geh-help-gnu-emacs@m.gmane.org; Wed, 17 Oct 2018 00:37:41 +0200 Original-Received: from localhost ([::1]:60446 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gCY0F-0007Ks-KA for geh-help-gnu-emacs@m.gmane.org; Tue, 16 Oct 2018 18:39:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55732) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gCXzT-0007Iy-SS for help-gnu-emacs@gnu.org; Tue, 16 Oct 2018 18:39:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gCXzS-0006Ww-Ql for help-gnu-emacs@gnu.org; Tue, 16 Oct 2018 18:39:03 -0400 Original-Received: from portable.galex-713.eu ([2a00:5884:8305::1]:41414) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gCXzO-0006MC-NG for help-gnu-emacs@gnu.org; Tue, 16 Oct 2018 18:39:00 -0400 Original-Received: from localhost ([::1] helo=portable.galex-713.eu) by portable.galex-713.eu with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gCXzK-0001ij-S6; Wed, 17 Oct 2018 00:38:54 +0200 X-GPG-FINGERPRINT: E109 9988 4197 D7CB B0BC 5C23 8DEB 24BA 867D 3F7F X-Accept-Language: fr, en, it, eo In-Reply-To: <99393ed6-6947-4246-ad8e-b4984c776a53@default> (Drew Adams's message of "Tue, 16 Oct 2018 15:13:16 -0700 (PDT)") X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:5884:8305::1 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:118286 Archived-At: Le 16/10/2018 =C3=A0 15h13, Drew Adams a =C3=A9crit=C2=A0: > Do whatever you like. ;-) Different people use different styles. > There is no standard or even a convention. Common Lisp > suggests some conventions, but there too there is nothing > official. What is this? it does interest me. > I use `when' and `unless' when I want to show a human > reader (mainly me) that the code doesn't use or care about > the return value. I don't use them when the returned `nil' > could be important. Okay, so what about when you care about the result, but absolutely not about the return value of the condition? (unless cond body) vs (or cond body) -> `or' might imply you might want to return cond. > I use `and' or `or' when the return value is significant. > (With `not' as needed.) > > I use `if' when the true part is a single sexp. If necessary, > to respect this I flip the true and false parts (negating the > condition). So unless it is simple, you always write your big-conditions if as an imbrication of both `or' and `and'? isn=E2=80=99t this actually less easy to understand (even if easier to read with indentation)? > I use `case' when the conditions would just test the > same symbol for equality against different values. And then comes typecase and its unability to have several types per clause, or when you want to use an arbitrary test function for case, the more likely and particular case of when you want that test function to be `equal', the case where in your bodies you always apply something to the aforementioned expr (so it looks redundant)=E2=80=A6 > I use `cond' when I have two or more sexps for each of > the true and false parts or I have more than two conditions. =E2=80=A6or the case each condition clause is actually to apply something t= o the same thing. I=E2=80=99ve refactored all this with my own typecase, case*, case-equal, case-apply, case-test=E2=80=A6 Where case-apply is based on case-equal whic= h is based on case*, and typecase on case-test. I still need to refactor all this into a big general-case function upon everything is based by being a particular case of it. > I don't use `pcase' much. Nothing against it, really. YMMV indeed :)