From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: Declaring a local dynamic variable? Date: Wed, 25 Sep 2013 14:53:36 -0400 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1380135253 3540 80.91.229.3 (25 Sep 2013 18:54:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 25 Sep 2013 18:54:13 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Sep 25 20:54:16 2013 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VOuE2-0008B2-L6 for geh-help-gnu-emacs@m.gmane.org; Wed, 25 Sep 2013 20:54:14 +0200 Original-Received: from localhost ([::1]:54319 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VOuE2-0006y2-B2 for geh-help-gnu-emacs@m.gmane.org; Wed, 25 Sep 2013 14:54:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VOuDl-0006xe-Fa for help-gnu-emacs@gnu.org; Wed, 25 Sep 2013 14:54:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VOuDc-0006ry-Sx for help-gnu-emacs@gnu.org; Wed, 25 Sep 2013 14:53:57 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:57634) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VOuDc-0006ri-M8 for help-gnu-emacs@gnu.org; Wed, 25 Sep 2013 14:53:48 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1VOuDa-0007nS-Kd for help-gnu-emacs@gnu.org; Wed, 25 Sep 2013 20:53:46 +0200 Original-Received: from 184.175.13.25 ([184.175.13.25]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 25 Sep 2013 20:53:46 +0200 Original-Received: from monnier by 184.175.13.25 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 25 Sep 2013 20:53:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 29 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 184.175.13.25 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:QdCaXvppTBy/ExNQILp5Gmqmlxg= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:93578 Archived-At: >> > So in essence Emacs doesn't really have local dynamic variables? >> Dynamic scoping is inherently global, whether in Elisp or in any other >> language. > Not in Common Lisp. > (defun d1 () > (let ((var 1)) > (declare (special var)) > (l1))) > (defun l1 () > (let ((var 2)) > (print var) > (d2))) > (defun d2 () > (declare (special var)) > (print var)) > D1 and D2 use the dynamic variable VAR, L1 uses the lexical variable VAR. Same in Elisp. But if d1 and d2 are in two separate packages that know nothing about each other but who happen to call each other through some potentially twisted sequence of calls, they will still interfere, because there's only (globally) one dynamic variable by that name. Stefan