From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.devel Subject: Re: lexbind: how to replace lexical-let approach to hide secrets Date: Wed, 30 Mar 2011 23:56:59 +0200 Organization: Organization?!? Message-ID: <874o6kclw4.fsf@fencepost.gnu.org> References: <4D926EA9.5080509@gmail.com> <4D92AD2B.40502@gmail.com> <87lizwd9lt.fsf_-_@lifelogs.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1301522250 13280 80.91.229.12 (30 Mar 2011 21:57:30 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 30 Mar 2011 21:57:30 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Mar 30 23:57:26 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Q53OF-0005sz-LI for ged-emacs-devel@m.gmane.org; Wed, 30 Mar 2011 23:57:23 +0200 Original-Received: from localhost ([127.0.0.1]:57158 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q53OF-0008S0-74 for ged-emacs-devel@m.gmane.org; Wed, 30 Mar 2011 17:57:23 -0400 Original-Received: from [140.186.70.92] (port=46326 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q53OA-0008Rj-Aj for emacs-devel@gnu.org; Wed, 30 Mar 2011 17:57:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q53O9-0004zy-41 for emacs-devel@gnu.org; Wed, 30 Mar 2011 17:57:18 -0400 Original-Received: from lo.gmane.org ([80.91.229.12]:39722) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q53O8-0004zE-UC for emacs-devel@gnu.org; Wed, 30 Mar 2011 17:57:17 -0400 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Q53O4-0005on-Fl for emacs-devel@gnu.org; Wed, 30 Mar 2011 23:57:12 +0200 Original-Received: from p508eca85.dip.t-dialin.net ([80.142.202.133]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 30 Mar 2011 23:57:12 +0200 Original-Received: from dak by p508eca85.dip.t-dialin.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 30 Mar 2011 23:57:12 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 27 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: p508eca85.dip.t-dialin.net X-Face: 2FEFf>]>q>2iw=B6, xrUubRI>pR&Ml9=ao@P@i)L:\urd*t9M~y1^:+Y]'C0~{mAl`oQuAl \!3KEIp?*w`|bL5qr,H)LFO6Q=qx~iH4DN; i"; /yuIsqbLLCh/!U#X[S~(5eZ41to5f%E@'ELIi$t^ Vc\LWP@J5p^rst0+('>Er0=^1{]M9!p?&:\z]|;&=NP3AhB!B_bi^]Pfkw User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:rzUAk35cXqe4Npwb4BwO/sQU1m0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 80.91.229.12 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:137938 Archived-At: Stefan Monnier writes: > When lexical-binding is set: > > (let ((data "my secret")) > (lambda () data)) > > returns something like (closure ((data . "my secret") t) () data). > If you wan to hide the value, then use: > > (let ((data (let ((sym (make-symbol "foo"))) > (set sym "secret") > sym))) > (lambda () (symbol-value data))) > > which is similar to the what lexical-let ends up doing. All of which, by necessity, contain the necessary material to get at the secret in the bytecode/closure/funcell. Where, of course, it is reasonable easy to retrieve it. And that is actually overkill, since you can always just call that closure. Anybody care to tell me what the point of this exercise is actually supposed to be? -- David Kastrup