From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.help Subject: Re: How does letf work? Date: Wed, 29 Jan 2014 03:23:35 +0100 Message-ID: <874n4nedaw.fsf@web.de> References: <52E838C8.5020101@miszellen.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1390962250 11923 80.91.229.3 (29 Jan 2014 02:24:10 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 29 Jan 2014 02:24:10 +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 Jan 29 03:24: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 1W8Kp3-0003aE-J6 for geh-help-gnu-emacs@m.gmane.org; Wed, 29 Jan 2014 03:24:13 +0100 Original-Received: from localhost ([::1]:40230 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8Kp3-0007JU-44 for geh-help-gnu-emacs@m.gmane.org; Tue, 28 Jan 2014 21:24:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54037) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8Kon-0007IL-AP for help-gnu-emacs@gnu.org; Tue, 28 Jan 2014 21:24:03 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W8Koh-0007Vv-3l for help-gnu-emacs@gnu.org; Tue, 28 Jan 2014 21:23:57 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:41962) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8Kog-0007Vr-TA for help-gnu-emacs@gnu.org; Tue, 28 Jan 2014 21:23:51 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1W8Kof-0003S3-47 for help-gnu-emacs@gnu.org; Wed, 29 Jan 2014 03:23:49 +0100 Original-Received: from ip-90-186-144-114.web.vodafone.de ([90.186.144.114]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 29 Jan 2014 03:23:49 +0100 Original-Received: from michael_heerdegen by ip-90-186-144-114.web.vodafone.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 29 Jan 2014 03:23:49 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 43 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: ip-90-186-144-114.web.vodafone.de User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:l8hT/ODYUqza5ODJZU+Ib8QdbCU= 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:95743 Archived-At: Florian Beck writes: > (letf (((cdr test-x) '(a b c d))) > test-x) > > = > (KEY 1 2 3 4) Though paradoxical, it seems right to me. You return a list that you modified temporarily, but when the result is printed in the echo area, the letf has been left and the structure of the list has changed back. Note that the variable test-x is not shadowed by your letf: (let ((test-x-before test-x)) (letf (((cdr test-x) '(a b c d))) (eq test-x test-x-before))) ==> t But it has the expected value at that "point of time": (letf (((cdr test-x) '(a b c d))) (message "%s" test-x)) "(KEY a b c d)" Here is a similarly paradoxical example without letf: (setq test-x '(KEY 1 2 3 4)) (let ((old-cdr (cdr test-x))) (prog2 (setf (cdr test-x) '(a b c d)) test-x ;returned value (setf (cdr test-x) old-cdr))) ==> (KEY 1 2 3 4) Regards, Michael.