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: Understanding the "let" construct and the setting of variables Date: Fri, 18 Dec 2020 21:39:52 +0100 Message-ID: <871rfmzw4n.fsf@zoho.eu> References: <87zh2d1byp.fsf@fastmail.fm> <87o8is26nu.fsf@fastmail.fm> 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="33113"; 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:gDCMFY+5XSxTHFmlULlREjgH4Qg= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 18 21:40:22 2020 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 1kqMY2-0008WC-Kv for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 18 Dec 2020 21:40:22 +0100 Original-Received: from localhost ([::1]:41568 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kqMY1-0004CV-L3 for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 18 Dec 2020 15:40:21 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52810) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqMXh-0004Bg-PN for help-gnu-emacs@gnu.org; Fri, 18 Dec 2020 15:40:01 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]:60754) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqMXg-0006JL-6n for help-gnu-emacs@gnu.org; Fri, 18 Dec 2020 15:40:01 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kqMXd-00081l-Vr for help-gnu-emacs@gnu.org; Fri, 18 Dec 2020 21:39:57 +0100 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:126528 Archived-At: Joost Kremers wrote: >> QUESTION: What happens if one does a "setq" on a variable >> defined in the binding part of the "let"? Can one do that? > > Yes, inside the body of the `let`, you can. You can, but it isn't optimal because if you make a typo you will be unaware of it and instead a global variable will silently be created. If it already exist, oh, my you will modify that instead of the intended let binding variable. So better to do all computation you reasonably can _before_ the let body, already in the varlist. Use several steps with `let*' and add supposedly unnecessary steps for clarity, better access and easier debug. In the let body, optimally, all computation is already done. There, you just _do_ whatever it is should happen, using the values you already have for the purpose. -- underground experts united http://user.it.uu.se/~embe8573 https://dataswamp.org/~incal