From 82ba818ff456bcd6d56a06226e3f27e98fbb55c3 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 14 Aug 2025 22:58:58 -0500 Subject: removing all downloaded devdocs files --- devdocs/elisp/setcar.html | 70 ----------------------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 devdocs/elisp/setcar.html (limited to 'devdocs/elisp/setcar.html') diff --git a/devdocs/elisp/setcar.html b/devdocs/elisp/setcar.html deleted file mode 100644 index 67867eb1..00000000 --- a/devdocs/elisp/setcar.html +++ /dev/null @@ -1,70 +0,0 @@ -

Altering List Elements with setcar

Changing the CAR of a cons cell is done with setcar. When used on a list, setcar replaces one element of a list with a different element.

Function: setcar cons object -
-

This function stores object as the new CAR of cons, replacing its previous CAR. In other words, it changes the CAR slot of cons to refer to object. It returns the value object. For example:

(setq x (list 1 2))
-     ⇒ (1 2)
-
-
(setcar x 4)
-     ⇒ 4
-
-
x
-     ⇒ (4 2)
-
-
-

When a cons cell is part of the shared structure of several lists, storing a new CAR into the cons changes one element of each of these lists. Here is an example:

;; Create two lists that are partly shared.
-(setq x1 (list 'a 'b 'c))
-     ⇒ (a b c)
-(setq x2 (cons 'z (cdr x1)))
-     ⇒ (z b c)
-
- -
;; Replace the CAR of a shared link.
-(setcar (cdr x1) 'foo)
-     ⇒ foo
-x1                           ; Both lists are changed.
-     ⇒ (a foo c)
-x2
-     ⇒ (z foo c)
-
- -
;; Replace the CAR of a link that is not shared.
-(setcar x1 'baz)
-     ⇒ baz
-x1                           ; Only one list is changed.
-     ⇒ (baz foo c)
-x2
-     ⇒ (z foo c)
-
-

Here is a graphical depiction of the shared structure of the two lists in the variables x1 and x2, showing why replacing b changes them both:

        --- ---        --- ---      --- ---
-x1---> |   |   |----> |   |   |--> |   |   |--> nil
-        --- ---        --- ---      --- ---
-         |        -->   |            |
-         |       |      |            |
-          --> a  |       --> b        --> c
-                 |
-       --- ---   |
-x2--> |   |   |--
-       --- ---
-        |
-        |
-         --> z
-
-

Here is an alternative form of box diagram, showing the same relationship:

x1:
- --------------       --------------       --------------
-| car   | cdr  |     | car   | cdr  |     | car   | cdr  |
-|   a   |   o------->|   b   |   o------->|   c   |  nil |
-|       |      |  -->|       |      |     |       |      |
- --------------  |    --------------       --------------
-                 |
-x2:              |
- --------------  |
-| car   | cdr  | |
-|   z   |   o----
-|       |      |
- --------------
-
-
-

- Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
- https://www.gnu.org/software/emacs/manual/html_node/elisp/Setcar.html -

-
-- cgit v1.2.3