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: Mon, 16 Aug 2021 02:43:28 +0200 Message-ID: <874kbqnrrj.fsf@zoho.eu> References: <4a9bddb9ec57299b3b0c@heytings.org> <87y293sdxk.fsf@zoho.eu> <87pmufs4er.fsf@zoho.eu> <87wnompmpw.fsf@zoho.eu> <87k0kmgycz.fsf@gnus.org> <87r1eunx92.fsf@zoho.eu> <87fsvanvxj.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="2934"; 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:rsYYS31bAKy5t8sh3uxoe6OfhvQ= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Aug 16 02:44:17 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 1mFQjh-0000aH-5Z for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 16 Aug 2021 02:44:17 +0200 Original-Received: from localhost ([::1]:47942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mFQjf-0000hU-Kz for geh-help-gnu-emacs@m.gmane-mx.org; Sun, 15 Aug 2021 20:44:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45998) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFQj8-0000hJ-2M for help-gnu-emacs@gnu.org; Sun, 15 Aug 2021 20:43:42 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:47892) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFQj6-00060R-GL for help-gnu-emacs@gnu.org; Sun, 15 Aug 2021 20:43:41 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mFQj4-000AOY-Jq for help-gnu-emacs@gnu.org; Mon, 16 Aug 2021 02:43:38 +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: -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:132602 Archived-At: Stefan Monnier via Users list for the GNU Emacs text editor wrote: >> Can't it be done with `lexical-let'? > > `lexical-let` is deprecated (and expands to ugly code, is > less efficient than using `lexical-binding`, and makes > debugging harder). OK, gotcha. > Note that I also consider not using `lexical-binding` as > deprecated (tho this is not yet the official position of > Emacs maintainers). I know right? BTW I've realized static vs. dynamic scope are the best terms. The words are each others opposites but they are also the best in terms of technology. Static scope: (let ((x 1)) . <- that's right! no (when run-time-condition <- matter conditions or (take-a-long-detour) ) <- detours it's the . ) <- same scope Dynamic scope: (let ((x 1)) . <- oh, no! x's scope now depends (when run-time-condition <- on run-time particulars which (take-a-long-detour) ) <- determine if it extends or . ) <- not into the detour function "Lexical" is intuitive with respect to the static scope but it isn't as intuitive why the dynamic scope _isn't_ "lexical". One has to think of the above to get there. But if one has to think of the above, one might just stop at that and call it dynamic. "Special" is confusing, especially because global variables behaves intuitively and dynamic `let' don't - and they are all special! The static vs. dynamic position of definition, does that relate to how this is implemented (a new variable vs. a new value pushed to the stack?) - but, since it works for the best terms, i.e. static vs. dynamic scope, the more the merrier :) -- underground experts united https://dataswamp.org/~incal