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: [External] : Re: Lexical vs. dynamic: small examples? Date: Sun, 15 Aug 2021 06:44:28 +0200 Message-ID: <87pmufs4er.fsf@zoho.eu> References: <4a9bddb9ec57299b3b0c@heytings.org> <87y293sdxk.fsf@zoho.eu> 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="35370"; 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:jDpzGGO24XFVPo7HvJvamIhRFtA= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sun Aug 15 06:45:24 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 1mF81U-0008wl-Ek for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 15 Aug 2021 06:45:24 +0200 Original-Received: from localhost ([::1]:39416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mF81T-0004tZ-7U for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 15 Aug 2021 00:45:23 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mF80q-0004rw-OI for help-gnu-emacs@gnu.org; Sun, 15 Aug 2021 00:44:45 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:34694) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mF80p-0005jB-3h for help-gnu-emacs@gnu.org; Sun, 15 Aug 2021 00:44:44 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mF80m-0008Br-F0 for help-gnu-emacs@gnu.org; Sun, 15 Aug 2021 06:44:40 +0200 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-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:132565 Archived-At: Drew Adams wrote, somewhere else: > If this is only about let "let's" have two lets, one > "let-stay" and one "let-follow". `let' is not the only construct that can define a scope. For example, a function definition (a `defun' or a lambda) defines the scope of its formal parameters - they're lexically scoped. Yes, and what happens is, the formal parameters are check first, only after that are global variables checked! But that is completely normal and 100% expected. If that is "lexical scope", how would one do it in another way? (OK, it _is_ lexical binding for the arguments and dynamic for the globals but has this any practical implications?) No, the only thing I've seen so far - maybe the only thing it is? - is `let', and that acts in two ways, the lexical way if one puts ;;; -*- lexical-binding: t -*- first thing in the source file, and if one doesn't, it acts in the dynamic way. So I wonder again, why not just have two let, one "let-stay" (the variables stay so has to be used and/or passed explicitely), and "let-follow" (the variables follow everywhere the code goes within the let form). Then one could drop this whole discussion because everything would work as expected and everyone could use whatever they wanted and instead of explaining some scope vs another in terms of theory one would have one docstring for "let-stay" and one for "let-follow" and these would also not confuse anything by engaging in a theoretical discussion but just describe what the function does and what its purpose is. ? -- underground experts united https://dataswamp.org/~incal