From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: [External] : Re: Lexical vs. dynamic: small examples? Date: Wed, 25 Aug 2021 19:47:20 -0400 Message-ID: References: <4a9bddb9ec57299b3b0c@heytings.org> <87y293sdxk.fsf@zoho.eu> <87pmufs4er.fsf@zoho.eu> <87wnompmpw.fsf@zoho.eu> <87k0kmgycz.fsf@gnus.org> <87y292nya4.fsf@zoho.eu> <87o89r5uwc.fsf@zoho.eu> <871r6hksj1.fsf@zoho.eu> Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32579"; 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:6tsSPsja+Ha8eMJDYcofHmUN7fw= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Aug 26 01:53:05 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 1mJ2hc-0008NV-Vc for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 26 Aug 2021 01:53:04 +0200 Original-Received: from localhost ([::1]:57280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mJ2hb-0000wU-Im for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 25 Aug 2021 19:53:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mJ2cI-0000vK-8Q for help-gnu-emacs@gnu.org; Wed, 25 Aug 2021 19:47:36 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:53128) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mJ2cG-0002dM-6O for help-gnu-emacs@gnu.org; Wed, 25 Aug 2021 19:47:34 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mJ2cA-0001zq-8Y for help-gnu-emacs@gnu.org; Thu, 26 Aug 2021 01:47:26 +0200 X-Injected-Via-Gmane: http://gmane.org/ 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:132721 Archived-At: > This means, I've been using `defvar' to shut up the > byte-compiler about variables not known to be defined, and > this has actually made them dynamic? Of course. If the compiler says it's "not known to be defined" that means the var isn't bound lexically (either that, or there's a bug in the compiler), so it can only make sense if the var is global or dynamically scoped (and both are closely related). There exist global variables which shouldn't be dynamically scoped, but they're rare in ELisp, mostly because of our use of namespace prefixes. One example is the variable `pi` which holds the famous constant but we don't want (let ((pi (get-previous-interval x))) ...) to temporarily redefine `pi` to something unrelated. This example is obsolete, tho: you should use `float-pi` instead of `pi` to refer to the famous constant. Stefan