From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Pascal J. Bourguignon" Newsgroups: gmane.emacs.help Subject: Re: Why doesn't nconc change my variable? Date: Sun, 05 Oct 2014 19:50:02 +0200 Organization: Informatimago Message-ID: <87r3ymmmnp.fsf@kuiper.lan.informatimago.com> References: <87zjdbmg38.fsf@kuiper.lan.informatimago.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1412531724 25037 80.91.229.3 (5 Oct 2014 17:55:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 5 Oct 2014 17:55:24 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Oct 05 19:55:19 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 1Xaq1e-0001HV-3M for geh-help-gnu-emacs@m.gmane.org; Sun, 05 Oct 2014 19:55:18 +0200 Original-Received: from localhost ([::1]:48228 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xaq1d-0007yu-PI for geh-help-gnu-emacs@m.gmane.org; Sun, 05 Oct 2014 13:55:17 -0400 Original-Path: usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 45 Original-X-Trace: individual.net aH7irjGj2FRKFY3SgfaR1AioPcpp2BZB5Ib/u5Dnn+aQ5lvSD5 Cancel-Lock: sha1:YjkzMzUxNjJhZTcwY2E0MTZjZDI0YjU1YWFkYmY2NTU5NTE5YzllZQ== sha1:zQcJJDWs49CxlEEx8GKIh+oCjWk= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Original-Xref: usenet.stanford.edu gnu.emacs.help:208012 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:100288 Archived-At: Marcin Borkowski writes: > On 2014-10-05, at 03:59, Pascal J. Bourguignon wrote: > >> Marcin Borkowski writes: >> >>> Hi list, >>> >>> I don't get it. >> >> () is actually read as the symbol nil. >> Symbols are symbols, and not cons cells. >> You cannot transform a symbol into a cons cell. >> It is impossible for any function to transform nil into a cons cell. >> >> And vice-versa, it is impossible to transform a cons cell into a symbol >> such as nil. This is the reason why you should also use setf when >> deleting elements from a list: >> >> (setf list (delete e list)) > > I still don't understand. What if I used (list) to generate an empty > list instead of () or nil? The results seem to be still the same. The function list returns nil or a cons. When it's given no argument, like in (list), it returns nil. When it's given N arguments, with N>=1, then it returns N new conses, cdr-linked, with each argument in order stored in the car slots. So if you used (list) it would make no difference, you'd have to store the result of delete or of nconc to the variable: (setf list (delete 42 (list))) (let ((list (list))) (setf list (nconc list (list 42))) list) -- __Pascal Bourguignon__ http://www.informatimago.com/ “The factory of the future will have only two employees, a man and a dog. The man will be there to feed the dog. The dog will be there to keep the man from touching the equipment.” -- Carl Bass CEO Autodesk