From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: How to avoid compiler warning `unused lexical variable' for `dolist' or `dotimes'? Date: Thu, 07 Jan 2021 21:21:23 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38763"; 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:HlpuTCX7VBtbv6cRvLRECTOqMA8= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jan 08 03:22: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 1kxhQE-0009zx-1F for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 08 Jan 2021 03:22:38 +0100 Original-Received: from localhost ([::1]:44214 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxhQB-0005Mu-Aa for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 07 Jan 2021 21:22:35 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxhP9-00056Y-Hq for help-gnu-emacs@gnu.org; Thu, 07 Jan 2021 21:21:32 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]:45954) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxhP7-0003FW-2r for help-gnu-emacs@gnu.org; Thu, 07 Jan 2021 21:21:30 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kxhP5-0008eg-FB for help-gnu-emacs@gnu.org; Fri, 08 Jan 2021 03:21:27 +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.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:127071 Archived-At: >> Indeed, I don't like this 3-arg form of `dotimes` and `dolist` because >> it tends to "hide" the return value. But we keep it because there's >> something to be said for not being "gratuitously" different from >> Common-Lisp. > > I do not see how it hides when I know how it is used from Common > Lisp. So I look there in third value and I know which one will be > returned. It's hidden because it's not at the usual place where the return value is usually placed (i.e. in the last expression). There are several other macros/specialforms that also place the return value elsewhere than the last expression, such as `unwind-protect`, (and to a lesser extent `if`, `cond`, `condition-case`, `prog1`), but these still place the return value in one of the immediate subexpressions, many of them use indentation to try and make the return value "stand out" from the rest, etc... In contrast in `dotimes` and `dolist` it's placed in a sub-sub-expression and moreover it's one that's rarely used (arguably *because* it's too deeply nested), so you're likely to miss it if you don't go looking for it very actively. Not that it matters anyway, Stefan