From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.help Subject: Re: How could I modify list element? Date: 9 Dec 2008 16:37:13 +0100 Message-ID: <20081209163258.B7055@colin2.muc.de> References: <493E7D65.3020405@foxmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Trace: ger.gmane.org 1228837197 26622 80.91.229.12 (9 Dec 2008 15:39:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 9 Dec 2008 15:39:57 +0000 (UTC) Cc: help-gnu-emacs@gnu.org To: richardeng Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Dec 09 16:41:01 2008 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 1LA4hp-0004bv-50 for geh-help-gnu-emacs@m.gmane.org; Tue, 09 Dec 2008 16:41:01 +0100 Original-Received: from localhost ([127.0.0.1]:34091 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LA4ge-0004uT-3D for geh-help-gnu-emacs@m.gmane.org; Tue, 09 Dec 2008 10:39:48 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LA4fi-0004iJ-Ro for help-gnu-emacs@gnu.org; Tue, 09 Dec 2008 10:38:50 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LA4fg-0004hO-Ix for help-gnu-emacs@gnu.org; Tue, 09 Dec 2008 10:38:49 -0500 Original-Received: from [199.232.76.173] (port=58655 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LA4fg-0004hL-Fq for help-gnu-emacs@gnu.org; Tue, 09 Dec 2008 10:38:48 -0500 Original-Received: from colin.muc.de ([193.149.48.1]:1403 helo=mail.muc.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LA4fg-0007Z4-LZ for help-gnu-emacs@gnu.org; Tue, 09 Dec 2008 10:38:48 -0500 Original-Received: (qmail 63639 invoked by uid 3782); 9 Dec 2008 15:37:13 -0000 Original-Date: Tue, 9 Dec 2008 16:37:13 +0100 (CET) In-Reply-To: <493E7D65.3020405@foxmail.com> X-detected-operating-system: by monty-python.gnu.org: FreeBSD 4.6-4.9 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:60500 Archived-At: On Tue, 9 Dec 2008, richardeng wrote: > Hi all, > setcar/setcdr is not convenient. > In a long list, ex. > (setq a '(a b c d e f g)) > I want to change 'e to 'E. > I need a function: (set-list-elt list old-elt new-elt) > > How? translate list to vector, modify, then turn it back??? Try this (not tested): (defun change-nth (liszt, n, nieuw) (while (> n 0) (setq liszt (cdr liszt) n (1- n))) (if liszt (setcar liszt nieuw))) -- Alan Mackenzie (Nuremberg, Germany).