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: run-with-timer does not display message Date: Mon, 21 Jul 2014 09:26:32 -0400 Message-ID: References: <878unputvv.fsf@debian.uxu> <2499282.TBjfJc2tWs@lunaryorn-fedora> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1405949243 15488 80.91.229.3 (21 Jul 2014 13:27:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 21 Jul 2014 13:27:23 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Jul 21 15:27:17 2014 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 1X9DcZ-000649-KV for geh-help-gnu-emacs@m.gmane.org; Mon, 21 Jul 2014 15:27:15 +0200 Original-Received: from localhost ([::1]:34167 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X9DcZ-0002bK-7Y for geh-help-gnu-emacs@m.gmane.org; Mon, 21 Jul 2014 09:27:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35865) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X9DcH-0002b2-CG for help-gnu-emacs@gnu.org; Mon, 21 Jul 2014 09:27:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X9Dc9-0000DI-HI for help-gnu-emacs@gnu.org; Mon, 21 Jul 2014 09:26:57 -0400 Original-Received: from plane.gmane.org ([80.91.229.3]:38031) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X9Dc9-0000DD-Ac for help-gnu-emacs@gnu.org; Mon, 21 Jul 2014 09:26:49 -0400 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1X9Dc6-0005hW-Hh for help-gnu-emacs@gnu.org; Mon, 21 Jul 2014 15:26:46 +0200 Original-Received: from 192-171-42-59.cpe.pppoe.ca ([192.171.42.59]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 21 Jul 2014 15:26:46 +0200 Original-Received: from monnier by 192-171-42-59.cpe.pppoe.ca with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 21 Jul 2014 15:26:46 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 36 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 192-171-42-59.cpe.pppoe.ca User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) Cancel-Lock: sha1:q+k8DxYk3/SlnV3HiVzyc9B2CIA= 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:98857 Archived-At: > This specific behaviour is what makes lexical binding special: Capturing > *lexical variables* in closures, as opposed to capturing values (by > backquotes) While this is used occasionally, most uses of lexical-scoping don't care about this "feature". E.g. *all* uses of lexical scoping in the ML family of languages (which don't have the equivalent of `setq'). > or just using dynamic variables. You cannot easily and > efficiently emulated this behaviour with macros and backquotes. As mentioned in another message, the byte-compiler faces the same problem. And the way it solves it can be applied to backquoted lambdas just as easily: just replace the variable with a cons cell whose `car' contains the value. IOW the byte-compiler will generate almost 100% exactly the same code for (let ((i 10)) (setq f-lexical (lambda () i)) (setq i 20)) as for (let ((i (list 10))) (setq f-lexical (lambda () (car i))) (setcar i 20)) and of course you can get the same result with backquote: (let ((i (list 10))) (setq f-lexical `(lambda () (car ',i))) (setcar i 20)) -- Stefan