From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Francis Moreau Newsgroups: gmane.emacs.help Subject: Re: Basic questions about elisp Date: Mon, 09 Nov 2009 22:04:41 +0100 Organization: Guest of ProXad - France Message-ID: References: <1e9f8449-09ec-4a84-a332-9f05fadb8aa3@z41g2000yqz.googlegroups.com> <87iqdpdog1.fsf@galatea.local> <871vkdm2p1.fsf@lola.goethe.zz> <4d5245de-4a71-4be7-a445-6d033be48490@g23g2000yqh.googlegroups.com> <87zl6ziooo.fsf@lola.goethe.zz> <878wejcpys.fsf@galatea.local> <871vk99c08.fsf@galatea.local> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1257803013 6344 80.91.229.12 (9 Nov 2009 21:43:33 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 9 Nov 2009 21:43:33 +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 Nov 09 22:43:26 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1N7c1F-0008Tz-G7 for geh-help-gnu-emacs@m.gmane.org; Mon, 09 Nov 2009 22:43:26 +0100 Original-Received: from localhost ([127.0.0.1]:36604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N7c1F-0000xK-27 for geh-help-gnu-emacs@m.gmane.org; Mon, 09 Nov 2009 16:43:25 -0500 Original-Path: news.stanford.edu!usenet.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!tiscali!newsfeed1.ip.tiscali.net!proxad.net!feeder1-2.proxad.net!cleanfeed4-a.proxad.net!nnrp17-1.free.fr!not-for-mail Original-Newsgroups: gnu.emacs.help User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) Cancel-Lock: sha1:B71wOUqt+KMdUblDIlzSsCoChjw= Original-Lines: 68 Original-NNTP-Posting-Date: 09 Nov 2009 22:04:48 MET Original-NNTP-Posting-Host: 82.235.205.153 Original-X-Trace: 1257800688 news-2.free.fr 3645 82.235.205.153:33551 Original-X-Complaints-To: abuse@proxad.net Original-Xref: news.stanford.edu gnu.emacs.help:174564 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:69638 Archived-At: pjb@informatimago.com (Pascal J. Bourguignon) writes: > Francis Moreau writes: > >> pjb@informatimago.com (Pascal J. Bourguignon) writes: >> >>> Francis Moreau writes: >>>>>> When I wrote '(2), I suppose the elisp interpreter to create a new >>>>>> list. >>>>> >>>>> It does so, but at read time. Not execution time. >>>>> >>>> >>>> Ah ok I see what you mean now. >>>> >>>> That's a pretty important point, is this part covered by the elisp info ? >>> >>> Yes. >>> >> >> Sorry for being blind but I can't find the revelant section. >> >> Could you give me a pointer ? > > Well, there are several places where it's covered, but here is one > where it's explicitely explained: > > > (info "(elisp)Rearrangement") > > > -- Function: nconc &rest lists > > [...] > > A common pitfall is to use a quoted constant list as a non-last > argument to `nconc'. If you do this, your program will change > each time you run it! Here is what happens: > > (defun add-foo (x) ; We want this function to add > (nconc '(foo) x)) ; `foo' to the front of its arg. > > (symbol-function 'add-foo) > => (lambda (x) (nconc (quote (foo)) x)) > > (setq xx (add-foo '(1 2))) ; It seems to work. > => (foo 1 2) > (setq xy (add-foo '(3 4))) ; What happened? > => (foo 1 2 3 4) > (eq xx xy) > => t > > (symbol-function 'add-foo) > => (lambda (x) (nconc (quote (foo 1 2 3 4) x))) ok that tells: "don't do that !" but it doesn't tell why not... > > Of course, it could be infered from: > C-h f quote RET > or: > (info "(elisp)Quoting") There's nothing here about a cons built by the Lisp Reader. Thanks -- Francis