help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Basic questions about elisp


From: Francis Moreau
Subject: Re: Basic questions about elisp
Date: Thu, 5 Nov 2009 06:29:03 -0800 (PST)
User-agent: G2/1.0

On Nov 5, 1:57 pm, address@hidden wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
>
> On Thu, Nov 05, 2009 at 03:13:32AM -0800, Francis Moreau wrote:
> > Hello,
>
> > I'm trying to learn elisp and have a couple of basic questions.
>
> > I'm iterating over a list using dotimes, but in the body of dotimes,
> > the list can mutate. For example I have:
>
> >   (dolist (elt lst)
> >     ;; some codes
> >     (nconc lst '(2)))
>
> > This adds/appends a new element to 'lst' list. It looks like 'dotimes'
> > doesn't like it.
>
> > So I eventually wrote it like this
>
> >     (setq i 0)
> >     (while (< i (length lst))
> >           ;; some codes
> >           (x-nconc lst '(2))))
> >       (setq i (1+ i)))
>
> > which is a bit ugly, is there another way to do that ?
>
> What about:
>
>   (let ((l lst))
>     (while l
>       (do-something-with (car l))
>       (setq l (cdr l))))
>

looks better but as David pointed out, appending something to a list
is quite expensive.

> This should be fine as long as you only append to lst. Dragons might
> emerge whenever you do more drastic things to it ;-)
>
> (and you would have to re-think things when Emacs Lisp becomes
> multi-threaded. It might work then and it might not).
>

Is this going to happen ?

Thanks


reply via email to

[Prev in Thread] Current Thread [Next in Thread]