From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: Another question about lambdas Date: Sat, 25 Feb 2023 08:31:22 +0100 Message-ID: <87edqe19rp.fsf@dataswamp.org> References: <87tu23kw9x.fsf@web.de> <861qp67wgm.fsf@gnu.org> <87wn6yyflc.fsf@web.de> <871qp5o05o.fsf@web.de> <87k02xm99a.fsf@web.de> <874jsoysal.fsf@dataswamp.org> <87tu0m8x13.fsf@web.de> <87357rnch0.fsf@dataswamp.org> <87h6w3bnwc.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11687"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:dwJoWRgFaElf1xxYKZynwZdCbdg= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Feb 27 09:20:08 2023 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 1pWYjw-0002my-AT for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 27 Feb 2023 09:20:08 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWWv4-0007bU-5P; Mon, 27 Feb 2023 01:23:30 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVp1u-0000Oz-KQ for help-gnu-emacs@gnu.org; Sat, 25 Feb 2023 02:31:39 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVp1r-0004Wm-WC for help-gnu-emacs@gnu.org; Sat, 25 Feb 2023 02:31:37 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1pVp1p-0007rG-VO for help-gnu-emacs@gnu.org; Sat, 25 Feb 2023 08:31:33 +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: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 27 Feb 2023 01:23:26 -0500 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 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-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:142860 Archived-At: Michael Heerdegen wrote: >> Are we talking lexical/static `let' inside or outside >> `defun's? >> >> Inside defuns they are very practical, local variables, >> basically, outside defuns they are interesting, rather, >> I have found 2 use cases so far, first, what in other >> languages are refered to as static variables (whose value >> don't reset between calls), second, the possibility to >> share such variables between functions. >> >> This file demonstrate those use cases, other than that >> I don't know what one is supposed to do with them, really, >> and so far they don't do anything global variables don't. >> So they are a method to not have those, basically? > > Dunno if this is a good summary, I would be careful. I find > the question a bit artificial - how is the classification > global vs local functions motivated? With top-level let-closures "enclosed" defuns can use the variables defined in the VARLIST of `let' as if they were global variables, but they are not. So perceived and real disadvantages of global variables won't pester your Elisp. And the advantages are, compared to local variables - also using `let' - they keep their values between function calls, and they can be shared/accessed by several functions. Here is an example showing these two advantages/use cases: https://dataswamp.org/~incal/emacs-init/w3m/w3m-survivor.el If there are other use cases I'm unaware of them. And if you think about those two use cases, they do nothing that global variables don't. So, it's all about avoiding the downsides of global variables? If so, it's enough - I'll take it. It makes the code more pretty/cool and you don't use global variables. -- underground experts united https://dataswamp.org/~incal