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: Effect of lexical binding upon function paramaters Date: Sat, 05 Nov 2022 16:32:41 +0100 Message-ID: <87o7tlfmcm.fsf@dataswamp.org> References: <87k04ci43r.fsf@dataswamp.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39107"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:VbGwdha0ukgwipVFv3FR04pZ+PE= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sat Nov 05 16:39:12 2022 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 1orLGK-0009v9-2W for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 05 Nov 2022 16:39:12 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1orLFz-0002Hb-Fl; Sat, 05 Nov 2022 11:38:51 -0400 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 1orLAC-0000XL-Kl for help-gnu-emacs@gnu.org; Sat, 05 Nov 2022 11:32:52 -0400 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 1orLAA-0001bP-I5 for help-gnu-emacs@gnu.org; Sat, 05 Nov 2022 11:32:52 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1orLA8-0001N1-Pi for help-gnu-emacs@gnu.org; Sat, 05 Nov 2022 16:32:48 +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-Mailman-Approved-At: Sat, 05 Nov 2022 11:38:47 -0400 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: , Original-Sender: "help-gnu-emacs" Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:140691 Archived-At: Stefan Monnier via Users list for the GNU Emacs text editor wrote: >> What I can see from this test below, formal parameters >> ("arguments" in standard information interchange) are >> always dynamic under dynabound, and always static under >> lexical > > Yup. Same holds for the var bound by `condition-case`. > The binding constructs that can be "either/or" are `let` and > `let*` (via `lexical-let` for the dynbound dialect and via > `defvar` for the lexbound dialect). For dynbound `let'/`let*' defaults to dynamic, just as it defaults to lexical for lexbound. However in the presence of another variable with the same name, while `let'/`let*' can bind it to another value, it doesn't change the lexical/dynamic status of the variable - and this is the case for both dialects. So how do you create a lexical binding under dynbound? `lexical-let'. (See example last.) And a dynamic/special variable under lexbound? `defvar'. So is it all about what let/let* defaults to? Almost? The other cases (formal parameters etc), should one consider them being dynamic as just collateral damage from an implementation policy detail which had to do with something else or are there arguments (ha) for that as well? (defun test-y () y) (let ((y 1)) (test-y) ) ; works, y is dynamic (lexical-let ((y 6)) (let ((y 10)) y ; 10 but ... (test-y) )) ; DNC in test-y, y is lexical -- underground experts united https://dataswamp.org/~incal