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

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

Re: [External] : Re: Appending lists


From: Emanuel Berg
Subject: Re: [External] : Re: Appending lists
Date: Sun, 20 Jun 2021 22:49:46 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

> Actually `append' can also be trouble because the last list
> isn't copied, the new list just has a cdr somewhere to it -
> yes, to the actual list [...]
>
> I don't know why append does this, either to speed things up
> or it has something to do with the car/cdr dynamic, maybe it
> is considered safe enough to move the car out of action with
> an actual copy ...

(setq list-head '(1)) ; (1)

(setq list-tail '(2 3 4)) ; (2 3 4)

(setq whole-list (append list-head list-tail)) ; (1 2 3 4)

(setcdr list-tail '(3.5 4)) ; (3.5 4)

whole-list ; (1 2 3.5 4) <-- the tail has changed

(setcar list-head 1.5)

whole-list ; <-- but here, the head is still unaffected, (1 2 3.5 4)

(setcar whole-list 1.33) ; well, of course that will work...

whole-list ; (1.33 2 3.5 4)

list-head ; still (1.5)

-- 
underground experts united
https://dataswamp.org/~incal




reply via email to

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