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

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

Re: Is it safe to modify a property list directly with PLIST-PUT?


From: Teemu Likonen
Subject: Re: Is it safe to modify a property list directly with PLIST-PUT?
Date: Mon, 27 Jul 2009 20:45:02 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

On 2009-07-27 10:31 (+0200), Pascal J. Bourguignon wrote:

> No, it wont' always work.  The problem occurs when the plist is nil,
> since nil is a constant symbol that is immutable.
>
>    (let ((p '())) ; the nil symbol
>       (plist-put p :bar 2)
>       p)
>    --> nil
>
> It seems that in the case of a non-null plist, emacs lisp adds the
> missing key to the tail of the plist (which doesn't incurs any
> additionnal cost, since the plist is already traversed for searching
> the key).  It only means that plist-put is a "destructive" function
> when the plist is not null.
>
>
> So if you don't want to store back the result of plist-put, you just
> have to ensure that the plist is not empty. You may initialize them
> with an unused key/value pair.

Thanks, again. So far I've used Emacs Lisp mostly non-destructively and
functionally. Only recently started to study what's happening on lower
levels. If one seriously needs to assign elements to lists or other
sequences I think SETF is the way. But it's kind of sad that CL
extension is not a first-class citizen in GNU Emacs.

Have Emacs developers ever considered switching completely to Common
Lisp and implementing the most important Emacs Lisp features on top of
that?


reply via email to

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