From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.help Subject: RE: How to avoid compiler warning `unused lexical variable' for `dolist' or `dotimes'? Date: Thu, 7 Jan 2021 19:03:06 -0800 (PST) Message-ID: <7eec4142-3c37-4084-9ea1-73df5df2c821@default> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11894"; mail-complaints-to="usenet@ciao.gmane.io" To: Stefan Monnier , help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jan 08 04:03: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 1kxi3u-0002xn-Ji for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 08 Jan 2021 04:03:38 +0100 Original-Received: from localhost ([::1]:59284 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxi3t-00007A-ID for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 07 Jan 2021 22:03:37 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35502) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxi3X-00006e-Qq for help-gnu-emacs@gnu.org; Thu, 07 Jan 2021 22:03:15 -0500 Original-Received: from userp2130.oracle.com ([156.151.31.86]:33684) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxi3V-0001Ma-E9 for help-gnu-emacs@gnu.org; Thu, 07 Jan 2021 22:03:15 -0500 Original-Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 1082riBn146738; Fri, 8 Jan 2021 03:03:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : message-id : date : from : sender : to : subject : references : in-reply-to : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=ncfQ+uBPtyNO3zUfVCnHfdKfdtKLQiLhgXThOGUB/Fs=; b=TjTv+bQzI7siNjVpW58aJxtGEPySCefT39yibyMvGyl+DxiTs9jh3NMAD2d9gI9e7e9E 1RJDVMlVKE+5X5sfsMBm11eV1jUhFSXA8tB/hKRKpCydHOViH7W9GSY2+WtEI6v8dvxG UbrLPEJMMMyGHrUfdgbeTcdQWZQ5MzKHCV4tC8uYuLn2hEv5JAArB7p2kVTDxW9/EQ4x B+ij95cjQVvtUSxHbImSWeFADgt0iO4pQ7rDRMKSBq6tYlw9iMPtMYrYDpXprfuVNZXT gFj2t6Ka+8+/9+wgqryNDCHV6sCwhsFMh5T5FhUGM5yVXXjFJPful64Tr2QJoWS4umCK /g== Original-Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2130.oracle.com with ESMTP id 35wftxeut4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 08 Jan 2021 03:03:10 +0000 Original-Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 1082tRcx185282; Fri, 8 Jan 2021 03:03:10 GMT Original-Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3030.oracle.com with ESMTP id 35w3g3pfnt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 08 Jan 2021 03:03:10 +0000 Original-Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 108337Ow020289; Fri, 8 Jan 2021 03:03:08 GMT In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 16.0.5095.0 (x86)] X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9857 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2101080015 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9857 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 mlxscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 lowpriorityscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2101080015 Received-SPF: pass client-ip=156.151.31.86; envelope-from=drew.adams@oracle.com; helo=userp2130.oracle.com X-Spam_score_int: -45 X-Spam_score: -4.6 X-Spam_bar: ---- X-Spam_report: (-4.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.246, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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:127082 Archived-At: > It's hidden because it's not at the usual place where the return value > is usually placed (i.e. in the last expression). >=20 > 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... >=20 > 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. >=20 > Not that it matters anyway, FWIW, Common Lisp has several iteration constructs that let you specify an = optional return value up front (as you would say, in a sub-sub-expression).= Not just `dolist' and `dotimes'. `do', for instance. There's nothing particularly odd, new, or unlispy about such design. It's = very old in Lisp iteration. And most such iteration constructs wrap everything in an implicit nil block= , so you can also use `return' anywhere to return a value. https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node88.html