F.G.H. 5/23/85 LispCourse #30: Conceptual Models for Atoms, Lists et al. LispCourse #30: Conceptual Models for Atoms, Lists et al. Introduction So far, we've been talking about data objects in Lisp in terms of how they appear to us as programmer's, i.e., in terms of how we type them in and how they are printed on the screen. Example: We defined a list as a thing that begins with a "(", followed by one or more atoms or lists, and terminated by a ")". This way of talking is not wrong, but it does not reflect how Lisp itself "thinks" about the various data objects. In particular, Lisp translates the data objects that we type-in into an internal representation. All functions dealing we these data objects then work on this internal representation of the objects. Only when it comes time to print out some result, does Lisp translate the internal; representation back into the external representation (i.e., into the print name described in LispCourse #28, page 9). You can't get very far in Lisp programming without understanding something about the underlying internal representations for atoms, lists, etc. For example, the semantics of many Lisp functions can be expressed only in terms of this underlying representation. There are many examples of this below. There are many levels at which one could describe the internal representation of Lisp data objects. For example, the harware actually processes bits that represent numbers and addresses in its memory. However, here we will discuss internal representaion at a conceptual level. The goal is to provide a conceptual model of Lisp data that provides all of the necessary concepts and mechanism for understanding the semantics of Lisp functions, BUT without going into the grubby details of how the data is actually implemented at the hardware/microcode level. Everything in Lisp is a Pointer The first lesson is that everything in Lisp is a pointer. A pointer is simply a one-way connection between two data objects. If A points to B, then we can get to B from A, but not vice versa. When we say that atom A has the value 5, Lisp represents this by a pointer between the thing that is the atom A and the thing that is the atom 5. (NIL ((.05 15.0 NIL) (TEXT (40.0 . 4.0) ("A") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((35.0 1.0 11.0 15.0)) NIL)) ((0.0 34.0 NIL) (WIRE ((56.0 . 8.0) (124.0 . 8.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (88.0 . 40.0) ( "The atom A points to the atom 5") 1.0 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) (( -29.0 37.0 234.0 14.0)) NIL)) ((.05 15.0 NIL) (TEXT (136.0 . 4.0) ("5") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((132.0 1.0 9.0 15.0)) NIL))) (0 0 176.0 50.0) 1.0 4.0 Similarly, when we represent the fact that the value of the atom NewList is the list (1 2 3), Lisp represents that by a pointer between the atom NewList and the thing that represents the list (1 2 3). (NIL ((0.0 34.0 NIL) (WIRE ((88.0 . 24.0) (156.0 . 24.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.05 15.0 NIL) (TEXT (164.0 . 56.0) ("The atom NewList points to the list (1 2 3)") 1.0 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((11.0 53.0 307.0 14.0)) NIL)) ((.05 12.0 NIL ) (TEXT (52.0 . 20.0) ("NewList ") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((17.0 17.0 70.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (228.0 . 20.0) ("The thing: (1 2 3)") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((162.0 17.0 132.0 15.0)) NIL))) (0 0 336.0 81.0) 1.0 4.0 Also, when we say function Foo returns a list, we actually mean that function Foo returns a pointer to a list. In some sense, you seldom actually hold a Lisp data object in you hands when you program in Lisp. Its more like you are holding one end of a rope in your hand. The other end of the rope is a Lisp data object. You operate in Lisp by passing around the free end of this rope, e.g., functions return to you a free end of the rope which you then pass onto other functions, etc. Representing Atoms In our conceptual model, atoms will be represented by their print name. So to represent the aton ManyWordAtom, we simply type use ManyWordAtom. An atom can have three pointers coming from it, representing its value, its prop list and its function definition. Example: (NIL ((.05 15.0 NIL) (TEXT (40.0 . 100.0) ("AnyAtom") 1.0 (CENTER BASELINE) (HELVETICA 14 ( BOLD REGULAR REGULAR)) ((6.0 97.0 68.0 15.0)) NIL)) ((0.0 44.0 NIL) (WIRE ((128.0 . 124.0) ( 216.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((152.0 . 104.0) ( 216.0 . 104.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 30.0 NIL) (WIRE ((152.0 . 76.0) (212.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (312.0 . 100.0) ( "Any Function Defintion") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD ITALIC REGULAR)) ((224.0 97.0 176.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (260.0 . 36.0) ("A Prop List") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD ITALIC REGULAR)) ((218.0 33.0 85.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (304.0 . 168.0) ("Any Lisp Data Object") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD ITALIC REGULAR)) ((224.0 165.0 161.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (120.0 . 100.0) ( "Function") 1.0 (CENTER BASELINE) (HELVETICA 10) ((93.0 98.0 54.0 12.0)) NIL)) ((.05 12.0 NIL ) (TEXT (108.0 . 124.0) ("Value") 1.0 (CENTER BASELINE) (HELVETICA 10) ((91.0 122.0 34.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (120.0 . 76.0) ("Prop List") 1.0 (CENTER BASELINE) ( HELVETICA 10) ((93.0 74.0 54.0 12.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((88.0 . 140.0) (80.0 . 104.0) (88.0 . 68.0)) 1 NIL NIL))) (0 0 418.0 195.0) 1.0 4.0 The SET functions (SET, SETQ, SETQQ) can be used to establish the pointer between an atom and its value. For example, (SETQ A 'B) sets up a (value) pointer between the atom A and the atom B. The function DEFINEQ establishes the pointer between an atom and a function definition. For example, (DEFINEQ (MyFunc (LAMBDA NIL (PLUS 1 3)))) sets up a (function) pointer between the atom MyFunc and the given function definition (LAMBDA ...). The function SETPROPLIST establishes the pointer between an atom and a prop list object. For example, (SETPROPLIST 'MyAtom '(Size 5)) sets up a (prop list) pointer between the atom MyAtom and the given prop list. Note: The functions PUTPROP and GETPROP add to and retrieve from from the prop list pointed to the given atom. Representing Lists The CONS cell Lists are constructed from basic building blocks called CONS cells. A CONS cell can be represented by a box divided into two halves. The left half is called the CAR and the right half is called the CDR. (NIL ((.078125 23.4375 NIL) (TEXT (152.0 . 144.0) ("A CONS cell") 1.5625 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((79.3125 138.8125 148.4375 23.4375)) NIL)) ((0.0 48.0 NIL ) (WIRE ((152.0 . 104.0) (152.0 . 8.0)) 2 NIL NIL)) ((.078125 23.4375 NIL) (TEXT (80.0 . 48.0) ("CAR") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((53.75 42.8125 54.6875 23.4375)) NIL)) ((.096 144.0 NIL) (BOX (8.0 8.0 288.0 96.0) 2)) ((.078125 23.4375 NIL) (TEXT (224.0 . 48.0) ("CDR") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR )) ((195.9375 42.8125 56.25 23.4375)) NIL))) (0 0 298.0625 162.25) 1.5625 8.0 Both the CAR and the CDR portions of a CONS cell contain pointers to other Lisp data objects. A CONS cells is printed as a dotted pair, (X . Y), where X is the print name of the thing pointed to by the CAR of the CONS cell and Y is the print name of the thing pointed to by the CDR. (NIL ((.078125 23.4375 NIL) (TEXT (192.0 . 248.0) ("The CONS cell: (55 . 789)") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((35.3125 243.0625 312.5 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((192.0 . 208.0) (192.0 . 112.0)) 2 NIL NIL)) ((.096 144.0 NIL) (BOX (48.0 112.0 288.0 96.0) 2)) ((.078125 23.4375 NIL) (TEXT (264.0 . 176.0) ("CDR") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((235.9375 170.8125 56.25 23.4375)) NIL)) ((.078125 23.4375 NIL) (TEXT (112.0 . 176.0) ("CAR") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((85.75 170.8125 54.6875 23.4375)) NIL)) ((.078125 23.4375 NIL) (TEXT (112.0 . 32.0) ("55") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((97.8125 27.4375 28.125 23.4375)) NIL)) ((.078125 23.4375 NIL) (TEXT (264.0 . 32.0) ("789") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((243.125 27.4375 42.1875 23.4375)) NIL) ) ((0.0 40.0 NIL) (WIRE ((264.0 . 144.0) (264.0 . 64.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ( (0.0 44.0 NIL) (WIRE ((112.0 . 152.0) (112.0 . 64.0)) 2 (NIL (LINE 30.0 18.75)) NIL))) (0 0 404.0625 280.5625) 1.5625 8.0 Creating a CONS cell is done using the function CONS. Example: (CONS 55 789) prints the result (55 . 789) and actually creates a CONS cell like the one shown above. Second example: (CONS 'A 'FooBar) prints the result (A . FooBar) and actually creates a CONS cell like the one shown below. (NIL ((.078125 23.4375 NIL) (TEXT (192.0 . 248.0) ("The result of (CONS 'A 'FooBar)") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((-1.5625 243.75 387.5 23.4375)) NIL)) ( (0.0 48.0 NIL) (WIRE ((192.0 . 208.0) (192.0 . 112.0)) 2 NIL NIL)) ((.096 144.0 NIL) (BOX ( 48.0 112.0 288.0 96.0) 2)) ((.078125 23.4375 NIL) (TEXT (264.0 . 176.0) ("CDR") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((235.9375 170.8125 56.25 23.4375)) NIL)) ((.078125 23.4375 NIL) (TEXT (112.0 . 176.0) ("CAR") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((85.75 170.8125 54.6875 23.4375)) NIL)) ((0.0 40.0 NIL) (WIRE (( 264.0 . 144.0) (264.0 . 64.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((0.0 44.0 NIL) (WIRE (( 112.0 . 152.0) (112.0 . 64.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT ( 104.0 . 24.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((96.875 18.75 17.1875 23.4375)) NIL)) ((.078125 18.75 NIL) (TEXT (256.0 . 24.0) ("FooBar") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((212.5 18.75 87.5 23.4375)) NIL))) (0 0 404.6875 281.25) 1.5625 8.0 Lists are built from CONS cells Lists are constructed from CONS cells in the following manner: There is a CONS cell for each item in the list. The CAR of the CONS cell points to the item. The CDR of the CONS cell points to the CONS cell for the next item in the list. The CDR of the CONS cell for the last item in the list (i.e., where there is no next item) points to the atom NIL. Example: Representation of the list (1 2 3 4) (NIL ((0.0 28.0 NIL) (WIRE ((104.0 . 240.0) (104.0 . 184.0)) 2 NIL NIL)) ((0.0 28.0 NIL) ( WIRE ((80.0 . 216.0) (80.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((136.0 . 216.0) (200.0 . 216.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 48.0 184.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (208.0 184.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (208.0 184.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (80.0 . 144.0) ("1") 1.0 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((76.0 141.0 9.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (240.0 . 144.0) ("2") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((236.0 141.0 9.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((240.0 . 216.0) (240.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (248.0 . 272.0) ( "The list (1 2 3 4)") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((187.0 269.0 123.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((264.0 . 240.0) (264.0 . 184.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((264.0 . 240.0) (264.0 . 184.0)) 1 NIL NIL)) ((0.0 240.0 NIL) (WIRE (( 456.0 . 216.0) (496.0 . 216.0) (496.0 . 184.0) (496.0 . 136.0) (496.0 . 120.0) (40.0 . 120.0) (16.0 . 120.0) (16.0 . 72.0) (40.0 . 72.0)) 2 ((LINE 30.0 12.0) NIL) NIL)) ((0.0 32.0 NIL) (WIRE ((296.0 . 216.0) (360.0 . 216.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (48.0 48.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (48.0 48.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((104.0 . 104.0) (104.0 . 48.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ( (104.0 . 104.0) (104.0 . 48.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((80.0 . 80.0) (80.0 . 24.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((136.0 . 80.0) (200.0 . 24.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (368.0 184.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (368.0 184.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (80.0 . 8.0) ("4") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((76.0 5.0 9.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (224.0 . 16.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((211.0 13.0 27.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (400.0 . 144.0) ("3") 1.0 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((396.0 141.0 9.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((400.0 . 216.0) (400.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((424.0 . 240.0) (424.0 . 184.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((424.0 . 240.0) (424.0 . 184.0)) 2 NIL NIL))) (0 0 516.75 287.5) 1.25 8.0 Second example: Representation of the list (Fe Fie (Fum Fu)) (NIL ((0.0 28.0 NIL) (WIRE ((72.0 . 272.0) (72.0 . 216.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((48.0 . 248.0) (48.0 . 192.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE (( 104.0 . 248.0) (168.0 . 248.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (16.0 216.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (176.0 216.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (176.0 216.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (48.0 . 176.0) ("Fe") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((39.0 173.0 19.0 15.0)) NIL)) ((.05 15.0 NIL ) (TEXT (208.0 . 176.0) ("Fie") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ( (197.0 173.0 23.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((208.0 . 248.0) (208.0 . 192.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (216.0 . 304.0) ( "The list (Fe Fie (Fum Fu))") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((119.0 301.0 194.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 272.0) (232.0 . 216.0)) 2 NIL NIL) ) ((0.0 28.0 NIL) (WIRE ((232.0 . 272.0) (232.0 . 216.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((264.0 . 248.0) (328.0 . 248.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 176.0 56.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (176.0 56.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((232.0 . 112.0) (232.0 . 56.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 112.0) (232.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((208.0 . 88.0) (208.0 . 32.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((416.0 . 248.0) (480.0 . 248.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (336.0 216.0 112.0 56.0) 1)) ((.056 56.0 NIL ) (BOX (336.0 216.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (208.0 . 16.0) ("Fum") 1.0 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((192.0 13.0 33.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (504.0 . 240.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((491.0 237.0 27.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((392.0 . 272.0) (392.0 . 216.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((392.0 . 272.0) (392.0 . 216.0)) 2 NIL NIL)) ((.056 56.0 NIL) (BOX (336.0 56.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (336.0 56.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((392.0 . 112.0) (392.0 . 56.0)) 1 NIL NIL)) ((0.0 28.0 NIL) ( WIRE ((392.0 . 112.0) (392.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((368.0 . 88.0) ( 368.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (368.0 . 16.0) ("Fu") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((358.0 13.0 20.0 15.0)) NIL)) (( .05 12.0 NIL) (TEXT (504.0 . 80.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((491.0 77.0 27.0 15.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((416.0 . 88.0) (480.0 . 88.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((264.0 . 88.0) (328.0 . 88.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 116.0 NIL) (WIRE ((368.0 . 248.0) (368.0 . 152.0) ( 368.0 . 136.0) (136.0 . 136.0) (136.0 . 80.0) (168.0 . 80.0)) 2 ((LINE 30.0 15.0) NIL) NIL)) ) (0 0 523.0 319.5) 1.25 8.0 Third example: Representation of the list ((Yes No)(Black White)) (NIL ((0.0 28.0 NIL) (WIRE ((72.0 . 384.0) (72.0 . 328.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((104.0 . 360.0) (168.0 . 360.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 16.0 328.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (176.0 328.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (176.0 328.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (216.0 . 416.0) ( "The list ((Yes No)(Black White))") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ( (96.0 413.0 241.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 384.0) (232.0 . 328.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 384.0) (232.0 . 328.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (200.0 208.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (200.0 208.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((256.0 . 264.0) (256.0 . 208.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((256.0 . 264.0) (256.0 . 208.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((264.0 . 360.0) (328.0 . 360.0 )) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (352.0 . 352.0) ("NIL") 1.0 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((339.0 349.0 27.0 15.0)) NIL)) ((.056 56.0 NIL) (BOX (360.0 208.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (360.0 208.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((416.0 . 264.0) (416.0 . 208.0)) 1 NIL NIL)) ((0.0 28.0 NIL) ( WIRE ((416.0 . 264.0) (416.0 . 208.0)) 2 NIL NIL)) ((.05 12.0 NIL) (TEXT (528.0 . 232.0) ( "NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((515.0 229.0 27.0 15.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((440.0 . 240.0) (504.0 . 240.0)) 2 (NIL (LINE 30.0 12.0)) NIL) ) ((0.0 32.0 NIL) (WIRE ((288.0 . 240.0) (352.0 . 240.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (0.0 28.0 NIL) (WIRE ((232.0 . 240.0) (232.0 . 184.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((392.0 . 240.0) (392.0 . 184.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((328.0 . 104.0) (392.0 . 104.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (248.0 72.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (248.0 72.0 112.0 56.0) 2 )) ((0.0 28.0 NIL) (WIRE ((304.0 . 128.0) (304.0 . 72.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((304.0 . 128.0) (304.0 . 72.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((280.0 . 104.0) (280.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((176.0 . 104.0) (240.0 . 104.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((144.0 . 128.0) (144.0 . 72.0 )) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((144.0 . 128.0) (144.0 . 72.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((120.0 . 104.0) (120.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (88.0 72.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (88.0 72.0 112.0 56.0) 2)) ((.0625 18.75 NIL) (TEXT (232.0 . 168.0) ("Black") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((211.25 164.5 43.75 17.5)) NIL)) ((.0625 18.75 NIL) (TEXT (392.0 . 168.0) ("White") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((368.75 164.5 48.75 17.5)) NIL)) ((.0625 18.75 NIL) (TEXT (120.0 . 32.0) ("Yes") 1.25 (CENTER BASELINE) ( HELVETICA 12 (BOLD REGULAR REGULAR)) ((104.75 27.75 30.0 17.5)) NIL)) ((.0625 18.75 NIL) (TEXT (280.0 . 32.0) ("No") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((269.75 27.75 21.25 17.5)) NIL)) ((.05 12.0 NIL) (TEXT (416.0 . 96.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((403.0 93.0 27.0 15.0)) NIL)) ((0.0 128.0 NIL) (WIRE ((48.0 . 352.0) (48.0 . 96.0) (72.0 . 96.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((0.0 56.0 NIL) (WIRE ((200.0 . 352.0) (200.0 . 288.0) (176.0 . 288.0) (160.0 . 288.0) (160.0 . 240.0) ( 192.0 . 240.0)) 2 ((LINE 30.0 15.0) NIL) NIL))) (0 0 522.5 432.0) 1.25 8.0 Fourth example: The result of (SETQ XYZ '(Foo Bar)) (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 152.0) (224.0 . 96.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((256.0 . 128.0) (320.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (168.0 96.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (328.0 96.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (328.0 96.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (200.0 . 184.0) ( "The result of (SETQ XYZ '(Foo Bar))") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((61.0 181.0 279.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((416.0 . 128.0) (480.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) ( TEXT (504.0 . 120.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 491.0 117.0 27.0 15.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((200.0 . 128.0) (200.0 . 56.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((352.0 . 128.0) (352.0 . 56.0)) 2 (NIL ( LINE 30.0 15.0)) NIL)) ((.0625 17.5 NIL) (TEXT (200.0 . 40.0) ("Foo") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((184.5 36.75 30.0 17.5)) NIL)) ((.0625 17.5 NIL) ( TEXT (352.0 . 40.0) ("Bar") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) (( 338.25 36.75 27.5 17.5)) NIL)) ((.0625 17.5 NIL) (TEXT (32.0 . 96.0) ("XYZ") 1.25 (CENTER BASELINE) (HELVETICA 12 (BOLD REGULAR REGULAR)) ((15.25 91.75 33.75 17.5)) NIL)) ((0.0 45.0 NIL) (WIRE ((63.0 . 143.0) (53.0 . 98.0) (63.0 . 53.0)) 1 NIL NIL)) ((.06066177 14.55882 NIL) (TEXT (88.0 . 123.0) ("Value") 1.213235 (CENTER BASELINE) (HELVETICA 10) ((67.41177 120.7941 41.25 14.55882)) NIL)) ((.06134259 14.72222 NIL) (TEXT (103.0 . 93.0) ("Function") 1.226852 (CENTER BASELINE) (HELVETICA 10) ((70.08333 90.93982 66.25 14.72222)) NIL)) ((.06134259 14.72222 NIL) (TEXT (103.0 . 63.0) ("Prop List") 1.226852 (CENTER BASELINE) (HELVETICA 10) (( 70.08333 60.26853 66.25 14.72222)) NIL)) ((0.0 24.0 NIL) (WIRE ((112.0 . 128.0) (152.0 . 128.0) (160.0 . 128.0)) 2 (NIL (LINE 30.0 15.0)) NIL))) (0 0 525.25 200.5) 1.25 8.0 CAR and CDR revisited CAR and CDR can be defined in terms of CONS cells as follows: CAR œ returns contents of the CAR part of the CONS cell pointed to by its argument. CDR œ returns contents of the CDR part of the CONS cell pointed to by its argument. Note: when the CONS cell is part of list, then the CDR part points to the CONS cell that begins the rest of the list as per our previous definition of CDR. (NIL ((0.0 28.0 NIL) (WIRE ((80.0 . 240.0) (80.0 . 184.0)) 2 NIL NIL)) ((0.0 40.0 NIL) (WIRE ((56.0 . 216.0) (56.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE (( 112.0 . 216.0) (176.0 . 216.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (24.0 184.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (184.0 184.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (184.0 184.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (56.0 . 120.0) ("1") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((52.0 117.0 9.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (216.0 . 120.0) ("2") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 212.0 117.0 9.0 15.0)) NIL)) ((0.0 40.0 NIL) (WIRE ((216.0 . 216.0) (216.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (224.0 . 272.0) ("The list (1 2 3)") 1.0 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((170.0 269.0 109.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((240.0 . 240.0) (240.0 . 184.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((240.0 . 240.0) (240.0 . 184.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((272.0 . 216.0) (336.0 . 216.0 )) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (344.0 184.0 112.0 56.0) 1)) (( .056 56.0 NIL) (BOX (344.0 184.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (376.0 . 120.0) ( "3") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((372.0 117.0 9.0 15.0)) NIL) ) ((0.0 40.0 NIL) (WIRE ((376.0 . 216.0) (376.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (0.0 28.0 NIL) (WIRE ((400.0 . 240.0) (400.0 . 184.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE (( 400.0 . 240.0) (400.0 . 184.0)) 2 NIL NIL)) ((0.0 24.0 NIL) (WIRE ((424.0 . 216.0) (472.0 . 216.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 208.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((477.25 203.75 23.75 16.25)) NIL)) ( (0.0 64.0 NIL) (WIRE ((152.0 . 208.0) (216.0 . 80.0)) 1 ((LINE 30.0 15.0) NIL) NIL)) ((0.0 48.0 NIL) (WIRE ((64.0 . 168.0) (104.0 . 72.0)) 1 ((LINE 30.0 15.0) NIL) NIL)) ((.0625 15.0 NIL) (TEXT (96.0 . 56.0) ("CAR returns" "this pointer") 1.25 (CENTER BASELINE) (HELVETICA 10) ((49.25 60.75 92.5 15.0) (53.0 45.75 85.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (232.0 . 64.0) ("CDR returns " "this pointer") 1.25 (CENTER BASELINE) (HELVETICA 10) ((184.5 69.5 96.25 15.0) (189.5 54.5 85.0 15.0)) NIL))) (0 0 519.75 287.5) 1.25 8.0 CONSing onto a list and LIST revisited Recall that CONS creates a new CONS cell with the first argument as its CAR and the second argument as its CDR. When the second argument is a list (i.e., a pointer to the first CONS cell in a list) then the result is a new list with a different CONS cell at the head of the list. Example: (SETQQ B (1 2)) then (SETQ B (CONS 'A B)) (NIL ((0.0 28.0 NIL) (WIRE ((216.0 . 376.0) (216.0 . 320.0)) 2 NIL NIL)) ((0.0 40.0 NIL) ( WIRE ((192.0 . 352.0) (192.0 . 272.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((248.0 . 352.0) (312.0 . 352.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 160.0 320.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 320.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 320.0 112.0 56.0) 2)) ((0.0 40.0 NIL) (WIRE ((352.0 . 352.0) (352.0 . 272.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (256.0 . 408.0) ( "After (SETQQ B (1 2))") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((173.0 405.0 167.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 376.0) (376.0 . 320.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 376.0) (376.0 . 320.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ( (408.0 . 352.0) (472.0 . 352.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT ( 496.0 . 344.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((480.25 340.5 33.75 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (80.0 . 344.0) ("B") 1.25 (CENTER BASELINE ) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((73.5 339.75 13.75 18.75)) NIL)) ((0.0 28.0 NIL) ( WIRE ((96.0 . 352.0) (152.0 . 352.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 18.75 NIL) ( TEXT (192.0 . 256.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 187.25 252.25 11.25 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (352.0 . 256.0) ("2") 1.25 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((347.25 252.25 11.25 18.75)) NIL)) (( .05 15.0 NIL) (TEXT (248.0 . 200.0) ("After (SETQ B (CONS 'A B))") 1.0 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((140.0 197.0 216.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (560.0 . 136.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((544.25 132.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((472.0 . 144.0) (536.0 . 144.0)) 2 (NIL ( LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (384.0 112.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (384.0 112.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((440.0 . 168.0) (440.0 . 112.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((440.0 . 168.0) (440.0 . 112.0)) 1 NIL NIL)) ((0.0 40.0 NIL) (WIRE ((416.0 . 144.0) (416.0 . 64.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (416.0 . 48.0) ("2") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((411.25 44.25 11.25 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((312.0 . 144.0) (376.0 . 144.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (224.0 112.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((280.0 . 168.0) (280.0 . 112.0)) 2 NIL NIL)) ((0.0 40.0 NIL) (WIRE ((256.0 . 144.0) (256.0 . 64.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((160.0 . 144.0) (216.0 . 144.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 18.75 NIL) (TEXT (256.0 . 48.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((251.25 44.25 11.25 18.75)) NIL)) ((.056 56.0 NIL) (BOX (64.0 112.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX ( 64.0 112.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((120.0 . 168.0) (120.0 . 112.0)) 2 NIL NIL )) ((0.0 28.0 NIL) (WIRE ((120.0 . 168.0) (120.0 . 112.0)) 1 NIL NIL)) ((0.0 16.0 NIL) (WIRE ((24.0 . 144.0) (56.0 . 144.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT ( 16.0 . 136.0) ("B") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((9.5 131.75 13.75 18.75)) NIL)) ((0.0 40.0 NIL) (WIRE ((96.0 . 144.0) (96.0 . 64.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (96.0 . 48.0) ("A") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((89.5 44.75 13.75 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (168.0 . 16.0) ("New CONS cell") 1.25 (CENTER BASELINE) (HELVETICA 14) ((95.75 12.25 146.25 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((168.0 . 40.0) (152.0 . 104.0)) 1 ((LINE 30.0 15.0) NIL) NIL)) ) (0 0 584.5 421.0) 1.25 8.0 Second example: (SETQQ B (1 2)) then (SETQ C (CONS 'A B)) (NIL ((0.0 28.0 NIL) (WIRE ((216.0 . 448.0) (216.0 . 392.0)) 2 NIL NIL)) ((0.0 40.0 NIL) ( WIRE ((192.0 . 424.0) (192.0 . 344.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((248.0 . 424.0) (312.0 . 424.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 160.0 392.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 392.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 392.0 112.0 56.0) 2)) ((0.0 40.0 NIL) (WIRE ((352.0 . 424.0) (352.0 . 344.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (256.0 . 480.0) ( "After (SETQQ B (1 2))") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((173.0 477.0 167.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 448.0) (376.0 . 392.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 448.0) (376.0 . 392.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ( (408.0 . 424.0) (472.0 . 424.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT ( 496.0 . 416.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((480.25 412.5 33.75 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 416.0) ("B") 1.25 (CENTER BASELINE ) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.5 411.75 13.75 18.75)) NIL)) ((0.0 52.0 NIL) ( WIRE ((48.0 . 424.0) (152.0 . 424.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 18.75 NIL) ( TEXT (192.0 . 328.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 187.25 324.25 11.25 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (352.0 . 328.0) ("2") 1.25 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((347.25 324.25 11.25 18.75)) NIL)) (( .05 15.0 NIL) (TEXT (248.0 . 272.0) ("After (SETQ C (CONS 'A B))") 1.0 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((140.0 269.0 217.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (560.0 . 144.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((544.25 140.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((472.0 . 152.0) (536.0 . 152.0)) 2 (NIL ( LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (384.0 120.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (384.0 120.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((440.0 . 176.0) (440.0 . 120.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((440.0 . 176.0) (440.0 . 120.0)) 1 NIL NIL)) ((0.0 40.0 NIL) (WIRE ((416.0 . 152.0) (416.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (416.0 . 56.0) ("2") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((411.25 52.25 11.25 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((312.0 . 152.0) (376.0 . 152.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (224.0 120.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((280.0 . 176.0) (280.0 . 120.0)) 2 NIL NIL)) ((0.0 40.0 NIL) (WIRE ((256.0 . 152.0) (256.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((160.0 . 152.0) (216.0 . 152.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 18.75 NIL) (TEXT (256.0 . 56.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((251.25 52.25 11.25 18.75)) NIL)) ((.056 56.0 NIL) (BOX (64.0 120.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX ( 64.0 120.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((120.0 . 176.0) (120.0 . 120.0)) 2 NIL NIL )) ((0.0 28.0 NIL) (WIRE ((120.0 . 176.0) (120.0 . 120.0)) 1 NIL NIL)) ((0.0 16.0 NIL) (WIRE ((24.0 . 152.0) (56.0 . 152.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT ( 8.0 . 216.0) ("B") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((1.5 211.75 13.75 18.75)) NIL)) ((0.0 40.0 NIL) (WIRE ((96.0 . 152.0) (96.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (96.0 . 56.0) ("A") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((89.5 52.75 13.75 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (168.0 . 24.0) ("New CONS cell") 1.25 (CENTER BASELINE) (HELVETICA 14) ((95.75 20.25 146.25 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((168.0 . 48.0) (152.0 . 112.0)) 1 ((LINE 30.0 15.0) NIL) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 376.0) ("C") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.0 372.0 15.0 18.75)) NIL)) ((0.0 16.0 NIL) (WIRE ((48.0 . 384.0) ( 80.0 . 384.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (104.0 . 376.0) ( "???") 1.25 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((89.25 372.75 30.0 18.75)) NIL)) ((0.0 96.0 NIL) (WIRE ((24.0 . 216.0) (176.0 . 216.0) (208.0 . 176.0) (216.0 . 168.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (8.0 . 144.0) ("C") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((1.0 140.0 15.0 18.75)) NIL))) (0 0 585.0 493.25) 1.25 8.0 The function LIST constructs a list with its arguments as the items in the list. Example: (LIST 1 2 3 '(3 4)) returns the list (1 2 3 (3 4)). LIST works by successive CONSes, i.e., by building the list one CONS cell at a time. EFS: Define the function NewLIST using the CONS function. APPEND revisited APPEND works very differently from CONS. In particular, APPEND copies all but the last list it is appending before it does the append. It then changes the last CDR cell in each copy to point to the head of the next copy rather than to NIL. Example: (SETQQ B (1 2)), (SETQQ C (3 4)) then (SETQ D (APPEND B C)) (NIL ((0.0 28.0 NIL) (WIRE ((216.0 . 568.0) (216.0 . 512.0)) 2 NIL NIL)) ((0.0 28.0 NIL) ( WIRE ((192.0 . 544.0) (192.0 . 488.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((248.0 . 544.0) (312.0 . 544.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 160.0 512.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 512.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 512.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((352.0 . 544.0) (352.0 . 488.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 15.0 NIL) (TEXT (200.0 . 600.0) ( "After (SETQQ B (1 2)) and (SETQQ C (3 4))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((17.0 596.0 366.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 568.0) (376.0 . 512.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 568.0) (376.0 . 512.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 544.0) (472.0 . 544.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (496.0 . 536.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((480.25 532.5 33.75 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 536.0) ("B") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.5 531.75 13.75 18.75)) NIL)) ((0.0 52.0 NIL) (WIRE ((48.0 . 544.0) (152.0 . 544.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) (( .0625 18.75 NIL) (TEXT (192.0 . 472.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((187.25 468.25 11.25 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (352.0 . 472.0 ) ("2") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((347.25 468.25 11.25 18.75)) NIL)) ((.05 15.0 NIL) (TEXT (144.0 . 296.0) ("After (SETQ D (APPEND B C))") 1.0 ( CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((16.0 292.0 256.0 19.0)) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 408.0) ("C") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.0 404.0 15.0 18.75)) NIL)) ((0.0 52.0 NIL) (WIRE ((48.0 . 416.0) (152.0 . 416.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 384.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((216.0 . 440.0) (216.0 . 384.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE (( 248.0 . 416.0) (312.0 . 416.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (320.0 384.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 384.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((376.0 . 440.0) (376.0 . 384.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((376.0 . 440.0) (376.0 . 384.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 416.0) (472.0 . 416.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (496.0 . 408.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((480.25 404.5 33.75 18.75)) NIL)) ((0.0 28.0 NIL) (WIRE ((192.0 . 416.0) (192.0 . 360.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((352.0 . 416.0) (352.0 . 360.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (192.0 . 344.0) ("3") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 187.0 339.75 11.25 18.75)) NIL)) ((.0625 18.75 NIL) (TEXT (352.0 . 344.0) ("4") 1.25 ( CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((347.0 339.75 11.25 18.75)) NIL)) (( .0625 15.0 NIL) (TEXT (696.0 . 80.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((680.25 76.5 33.75 18.75)) NIL)) ((0.0 24.0 NIL) (WIRE ((624.0 . 88.0) ( 672.0 . 88.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (536.0 56.0 112.0 56.0 ) 1)) ((.056 56.0 NIL) (BOX (536.0 56.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((592.0 . 112.0) (592.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((592.0 . 112.0) (592.0 . 56.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((568.0 . 88.0) (568.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 20.0 NIL) (WIRE ((488.0 . 88.0) (528.0 . 88.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((448.0 . 112.0) (448.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE (( 424.0 . 88.0) (424.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (392.0 56.0 112.0 56.0) 2)) ((.0625 18.75 NIL) (TEXT (568.0 . 16.0) ("4") 1.25 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((563.0 11.75 11.25 18.75)) NIL)) ((.0625 18.75 NIL) ( TEXT (424.0 . 16.0) ("3") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((419.0 11.75 11.25 18.75)) NIL)) ((0.0 24.0 NIL) (WIRE ((336.0 . 88.0) (384.0 . 88.0)) 2 (NIL ( LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (248.0 56.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (248.0 56.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((304.0 . 112.0) (304.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((304.0 . 112.0) (304.0 . 56.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((280.0 . 88.0) (280.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) ( TEXT (280.0 . 16.0) ("2") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 275.25 12.25 11.25 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((200.0 . 88.0) (240.0 . 88.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (104.0 56.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((160.0 . 112.0) (160.0 . 56.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((136.0 . 88.0 ) (136.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) (TEXT (136.0 . 16.0) ( "1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((131.5 12.25 11.25 18.75)) NIL)) ((0.0 28.0 NIL) (WIRE ((40.0 . 88.0) (96.0 . 88.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ( (.0625 15.0 NIL) (TEXT (32.0 . 80.0) ("D") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.0 76.75 15.0 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (496.0 . 240.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((480.25 236.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 248.0) (472.0 . 248.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) (( 0.0 28.0 NIL) (WIRE ((376.0 . 272.0) (376.0 . 216.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE (( 376.0 . 272.0) (376.0 . 216.0)) 2 NIL NIL)) ((.0625 18.75 NIL) (TEXT (352.0 . 176.0) ("2") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((347.25 172.25 11.25 18.75)) NIL) ) ((0.0 28.0 NIL) (WIRE ((352.0 . 248.0) (352.0 . 192.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.056 56.0 NIL) (BOX (320.0 216.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 216.0 112.0 56.0) 1)) ((0.0 32.0 NIL) (WIRE ((248.0 . 248.0) (312.0 . 248.0)) 2 (NIL (LINE 30.0 12.0) ) NIL)) ((0.0 28.0 NIL) (WIRE ((216.0 . 272.0) (216.0 . 216.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((192.0 . 248.0) (192.0 . 192.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 18.75 NIL) ( TEXT (192.0 . 176.0) ("1") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 187.25 172.25 11.25 18.75)) NIL)) ((.056 56.0 NIL) (BOX (160.0 216.0 112.0 56.0) 2)) ((0.0 52.0 NIL) (WIRE ((48.0 . 248.0) (152.0 . 248.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 240.0) ("B") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.5 235.75 13.75 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (32.0 . 144.0) ("C") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((25.0 140.0 15.0 18.75)) NIL)) ( (0.0 172.0 NIL) (WIRE ((40.0 . 152.0) (40.0 . 152.0) (368.0 . 152.0) (384.0 . 120.0)) 2 ( NIL (LINE 30.0 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (608.0 . 208.0) ("Copies") 1.5625 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((568.125 202.8125 82.8125 23.4375)) NIL)) ((0.0 192.0 NIL) (WIRE ((608.0 . 192.0) (224.0 . 120.0)) 1 ((LINE 30.0 18.75) NIL) NIL )) ((0.0 128.0 NIL) (WIRE ((608.0 . 192.0) (352.0 . 120.0)) 1 ((LINE 30.0 18.75) NIL) NIL))) (0 0 731.25 621.5625) 1.5625 8.0 The COPY function The function COPY makes a copy of a list by copying all the CONS cells in the list. APPEND uses COPY to make its copies. Note: COPY copies only the top-level of a list. If the CAR of any CONS cell points to another list, then that list is NOT copied. Example: (SETQQ B ((1 2) (3 4)) then (SETQ C (COPY B)) (NIL ((0.0 28.0 NIL) (WIRE ((72.0 . 616.0) (72.0 . 560.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((96.0 . 592.0) (160.0 . 592.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 8.0 560.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (168.0 560.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (168.0 560.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 776.0) ( "After (SETQQ B ((1 2) (3 4))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) (( 19.0 772.0 234.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 616.0) (232.0 . 560.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((232.0 . 616.0) (232.0 . 560.0)) 1 NIL NIL)) ((0.0 20.0 NIL) ( WIRE ((256.0 . 592.0) (296.0 . 592.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) ( TEXT (320.0 . 584.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 304.25 580.5 33.75 18.75)) NIL)) ((.05 15.0 NIL) (TEXT (120.0 . 472.0) ( "After (SETQ C (COPY B))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((13.0 468.0 214.0 19.0)) NIL)) ((.056 56.0 NIL) (BOX (384.0 560.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((448.0 . 616.0) (448.0 . 560.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((472.0 . 592.0) (536.0 . 592.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (544.0 560.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (544.0 560.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((608.0 . 616.0) (608.0 . 560.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((608.0 . 616.0) (608.0 . 560.0 )) 1 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((632.0 . 592.0) (672.0 . 592.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (696.0 . 584.0) ("NIL") 1.25 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((680.25 580.5 33.75 18.75)) NIL)) ((.0625 15.0 NIL) ( TEXT (536.0 . 712.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 520.25 708.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((448.0 . 720.0) (512.0 . 720.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((416.0 . 744.0) (416.0 . 688.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((416.0 . 744.0) (416.0 . 688.0)) 2 NIL NIL)) ((.056 56.0 NIL) ( BOX (360.0 688.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (360.0 688.0 112.0 56.0) 1)) ((0.0 32.0 NIL) (WIRE ((288.0 . 720.0) (352.0 . 720.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((256.0 . 744.0) (256.0 . 688.0)) 2 NIL NIL)) ((.056 56.0 NIL) (BOX (200.0 688.0 112.0 56.0) 2)) ((0.0 52.0 NIL) (WIRE ((88.0 . 720.0) (192.0 . 720.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.0625 15.0 NIL) (TEXT (72.0 . 712.0) ("B") 1.25 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((65.5 707.75 13.75 18.75)) NIL)) ((0.0 104.0 NIL) (WIRE ((232.0 . 712.0) (232.0 . 656.0) (24.0 . 656.0) (24.0 . 632.0) (24.0 . 624.0)) 2 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 48.0 NIL) (WIRE ((392.0 . 720.0) (392.0 . 632.0) (392.0 . 624.0 )) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 584.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((18.75 578.9375 45.3125 20.3125 )) NIL)) ((.078125 18.75 NIL) (TEXT (200.0 . 584.0) ("-->2") 1.5625 (CENTER BASELINE) ( HELVETICA 10 (BOLD REGULAR REGULAR)) ((178.125 578.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (416.0 . 584.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((393.75 578.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (576.0 . 584.0 ) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((554.6875 578.9375 45.3125 20.3125)) NIL)) ((.0625 15.0 NIL) (TEXT (88.0 . 416.0) ("B") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((81.5 411.75 13.75 18.75)) NIL)) ((0.0 52.0 NIL) (WIRE ((104.0 . 424.0) (208.0 . 424.0)) 2 (NIL (LINE 30.0 15.0)) NIL)) ((.056 56.0 NIL) (BOX ( 216.0 392.0 112.0 56.0) 2)) ((0.0 104.0 NIL) (WIRE ((248.0 . 416.0) (248.0 . 360.0) (40.0 . 360.0) (40.0 . 336.0) (40.0 . 328.0)) 2 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 28.0 NIL) ( WIRE ((272.0 . 448.0) (272.0 . 392.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((304.0 . 424.0) ( 368.0 . 424.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (376.0 392.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (376.0 392.0 112.0 56.0) 1)) ((0.0 48.0 NIL) (WIRE ((408.0 . 424.0) (408.0 . 336.0) (408.0 . 328.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((0.0 28.0 NIL) (WIRE ((432.0 . 448.0) (432.0 . 392.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((432.0 . 448.0) (432.0 . 392.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((464.0 . 424.0) (528.0 . 424.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (24.0 264.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (184.0 264.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (184.0 264.0 112.0 56.0) 2)) (( .056 56.0 NIL) (BOX (400.0 264.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((88.0 . 320.0) ( 88.0 . 264.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((248.0 . 320.0) (248.0 . 264.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((248.0 . 320.0) (248.0 . 264.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((464.0 . 320.0) (464.0 . 264.0)) 2 NIL NIL)) ((.0625 15.0 NIL) (TEXT (552.0 . 416.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((536.25 412.5 33.75 18.75)) NIL )) ((.078125 18.75 NIL) (TEXT (56.0 . 288.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((34.75 282.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT ( 216.0 . 288.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) (( 194.125 282.9375 45.3125 20.3125)) NIL)) ((.0625 15.0 NIL) (TEXT (336.0 . 288.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((320.25 284.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (432.0 . 288.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((409.75 282.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT ( 592.0 . 288.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) (( 570.6875 282.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((112.0 . 296.0) (176.0 . 296.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 20.0 NIL) (WIRE ((272.0 . 296.0) (312.0 . 296.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((488.0 . 296.0) (552.0 . 296.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 20.0 NIL) (WIRE ((648.0 . 296.0) (688.0 . 296.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((624.0 . 320.0) (624.0 . 264.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((624.0 . 320.0) (624.0 . 264.0)) 1 NIL NIL)) (( .0625 15.0 NIL) (TEXT (712.0 . 288.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((696.25 284.5 33.75 18.75)) NIL)) ((.056 56.0 NIL) (BOX (560.0 264.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (560.0 264.0 112.0 56.0) 2)) ((.0625 15.0 NIL) (TEXT (88.0 . 152.0) ("C") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((80.0 148.0 15.0 18.75)) NIL)) ((0.0 52.0 NIL) (WIRE ((104.0 . 160.0) (208.0 . 160.0)) 2 (NIL ( LINE 30.0 15.0)) NIL)) ((.056 56.0 NIL) (BOX (216.0 128.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((272.0 . 184.0) (272.0 . 128.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((304.0 . 160.0) ( 368.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (376.0 128.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (376.0 128.0 112.0 56.0) 1)) ((0.0 28.0 NIL) (WIRE ((432.0 . 184.0) (432.0 . 128.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((432.0 . 184.0) (432.0 . 128.0 )) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((464.0 . 160.0) (528.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (552.0 . 152.0) ("NIL") 1.25 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((536.25 148.5 33.75 18.75)) NIL)) ((0.0 108.0 NIL) (WIRE ((248.0 . 160.0) (248.0 . 224.0) (32.0 . 224.0) (32.0 . 256.0)) 2 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 48.0 NIL) (WIRE ((408.0 . 160.0) (408.0 . 256.0)) 2 ((LINE 30.0 18.75) NIL) NIL) ) ((.078125 18.75 NIL) (TEXT (352.0 . 40.0) ("Copies") 1.5625 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((312.0625 35.0 82.8125 23.4375)) NIL)) ((0.0 36.0 NIL) (WIRE (( 352.0 . 64.0) (424.0 . 112.0)) 1 (NIL (LINE 30.0 18.75)) NIL)) ((0.0 36.0 NIL) (WIRE (( 344.0 . 64.0) (272.0 . 120.0)) 1 ((LINE 30.0 18.75) NIL) NIL))) (0 0 734.375 789.875) 1.5625 8.0 RPLACA, RPLACD, and NCONC -- The destructive functions RPLACA, RPLACD, and NCONC are three function that "do surgery on lists." Unlike APPEND, they don't make copies and then carry out actions on the copies, rather they actually change the list they are passed as an argument. Because of this they are dangerous functions and should be used with some care!!!! (RPLACA X Y)œ replaces the CAR of the CONS cell X with a pointer Y. RPLACA returns X. Example: 1_(SETQQ A (1 2 3)) (1 2 3) 2_(RPLACA A '(7 8)) ((7 8) 2 3) Note: No SETQ is necessary because the actual list is changed. 3_ A ((7 8) 2 3) 4_ (RPLACA (CDR A) '(5 6)) ((5 6) 3) 5_ A ((7 8) (5 6) 3) (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 136.0) (224.0 . 80.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 112.0) (312.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 80.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 160.0) ( "After (SETQQ A (1 2 3))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((36.0 156.0 200.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 80.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 136.0) (544.0 . 80.0)) 2 NIL NIL) ) ((0.0 20.0 NIL) (WIRE ((576.0 . 112.0) (616.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.0625 15.0 NIL) (TEXT (640.0 . 104.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 100.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 104.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 98.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 104.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 98.9375 45.3125 20.3125)) NIL)) (( .078125 18.75 NIL) (TEXT (512.0 . 104.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((489.75 98.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 112.0) (472.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 104.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 98.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 112.0) (152.0 . 112.0)) 2 ( NIL (LINE 30.0 12.0)) NIL))) (0 0 731.25 174.625) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 192.0) (224.0 . 136.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 168.0) (312.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 136.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 136.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 136.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 216.0) ( "After (RPLACA A '(7 8))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((37.0 212.0 199.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 192.0) (384.0 . 136.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 192.0) (384.0 . 136.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 136.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 192.0) (544.0 . 136.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 168.0) (616.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL) ) ((.0625 15.0 NIL) (TEXT (640.0 . 160.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 156.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 160.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 154.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (512.0 . 160.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((489.75 154.9375 45.3125 20.3125)) NIL) ) ((0.0 32.0 NIL) (WIRE ((408.0 . 168.0) (472.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.078125 18.75 NIL) (TEXT (40.0 . 160.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 154.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 168.0) (152.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 56.0 NIL) (WIRE ((192.0 . 160.0) (192.0 . 48.0) (224.0 . 48.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.056 56.0 NIL) (BOX (232.0 16.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (232.0 16.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (264.0 . 40.0) ("-->7") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((242.1875 35.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((296.0 . 72.0) ( 296.0 . 16.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((296.0 . 72.0) (296.0 . 16.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((320.0 . 48.0) (384.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (392.0 16.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (424.0 . 40.0) ( "-->8") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((401.5625 35.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 72.0) (456.0 . 16.0)) 2 NIL NIL)) (( 0.0 20.0 NIL) (WIRE ((488.0 . 48.0) (528.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (552.0 . 40.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((536.25 36.5 33.75 18.75)) NIL))) (0 0 725.0 231.0) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 304.0) (224.0 . 248.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 280.0) (312.0 . 280.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 248.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 248.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 248.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (152.0 . 328.0) ( "After (RPLACA (CDR A) '(5 6))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) (( 24.0 324.0 256.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 304.0) (384.0 . 248.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 304.0) (384.0 . 248.0)) 1 NIL NIL)) ((.056 56.0 NIL) ( BOX (480.0 248.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 304.0) (544.0 . 248.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 280.0) (616.0 . 280.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (640.0 . 272.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 ( BOLD REGULAR REGULAR)) ((624.25 268.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (512.0 . 272.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((489.75 266.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 280.0) (472.0 . 280.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 272.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 266.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 280.0) (152.0 . 280.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 100.0 NIL) (WIRE ((192.0 . 280.0) (192.0 . 80.0) (224.0 . 80.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.056 56.0 NIL) (BOX (232.0 48.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (232.0 48.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (264.0 . 72.0) ("-->7") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((242.1875 67.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((296.0 . 104.0) (296.0 . 48.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((296.0 . 104.0) (296.0 . 48.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((320.0 . 80.0) (384.0 . 80.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (392.0 48.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (424.0 . 72.0) ("-->8") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((401.5625 67.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 104.0) (456.0 . 48.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((488.0 . 80.0) (528.0 . 80.0)) 2 (NIL ( LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (552.0 . 72.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((536.25 68.5 33.75 18.75)) NIL)) ((.0625 15.0 NIL) ( TEXT (712.0 . 176.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 696.25 172.5 33.75 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((648.0 . 184.0) (688.0 . 184.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (552.0 152.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((616.0 . 208.0) (616.0 . 152.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (584.0 . 176.0) ("-->6") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((562.5 171.375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((480.0 . 184.0) (544.0 . 184.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (392.0 152.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (392.0 152.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((456.0 . 208.0) (456.0 . 152.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 208.0) (456.0 . 152.0)) 1 NIL NIL)) (( .078125 18.75 NIL) (TEXT (424.0 . 176.0) ("-->5") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((401.5625 171.375 45.3125 20.3125)) NIL)) ((0.0 44.0 NIL) (WIRE (( 352.0 . 280.0) (352.0 . 192.0) (384.0 . 192.0)) 2 (NIL (LINE 30.0 18.75)) NIL))) (0 0 729.6875 343.25) 1.5625 8.0 (RPLACD X Y)œ replaces the CDR of the CONS cell X with a pointer Y. RPLACD returns X. Example: 6_(SETQQ A (1 2 3)) (1 2 3) 7_(RPLACD A '(7 8)) (1 7 8) Note: No SETQ is necessary because the actual list is changed. 8_ A (1 7 8) 9_ (RPLACD (CDR A) '((5 6))) (7 (5 6)) 10_A (1 7 (5 6)) (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 136.0) (224.0 . 80.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 112.0) (312.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 80.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 160.0) ( "After (SETQQ A (1 2 3))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((36.0 156.0 200.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 80.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 136.0) (544.0 . 80.0)) 2 NIL NIL) ) ((0.0 20.0 NIL) (WIRE ((576.0 . 112.0) (616.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.0625 15.0 NIL) (TEXT (640.0 . 104.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 100.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 104.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 98.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 104.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 98.9375 45.3125 20.3125)) NIL)) (( .078125 18.75 NIL) (TEXT (512.0 . 104.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((489.75 98.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 112.0) (472.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 104.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 98.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 112.0) (152.0 . 112.0)) 2 ( NIL (LINE 30.0 12.0)) NIL))) (0 0 731.25 174.625) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 192.0) (224.0 . 136.0)) 2 NIL NIL)) ((.056 56.0 NIL) ( BOX (160.0 136.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 136.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 136.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 216.0) ( "After (RPLACD A '(7 8))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((36.0 212.0 200.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 192.0) (384.0 . 136.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 192.0) (384.0 . 136.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 136.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 192.0) (544.0 . 136.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 168.0) (616.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL) ) ((.0625 15.0 NIL) (TEXT (640.0 . 160.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 156.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 160.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.3125 154.6875 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (512.0 . 160.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((489.75 154.9375 45.3125 20.3125)) NIL) ) ((0.0 32.0 NIL) (WIRE ((408.0 . 168.0) (472.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.078125 18.75 NIL) (TEXT (40.0 . 160.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 154.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 168.0) (152.0 . 168.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 56.0 NIL) (WIRE ((248.0 . 168.0) (248.0 . 56.0) (280.0 . 56.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.056 56.0 NIL) (BOX (288.0 24.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (288.0 24.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (320.0 . 48.0) ("-->7") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((298.1875 43.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((352.0 . 80.0) ( 352.0 . 24.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((352.0 . 80.0) (352.0 . 24.0)) 1 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((376.0 . 56.0) (440.0 . 56.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (448.0 24.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (480.0 . 48.0) ( "-->8") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((457.5625 43.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((512.0 . 80.0) (512.0 . 24.0)) 2 NIL NIL)) (( 0.0 20.0 NIL) (WIRE ((544.0 . 56.0) (584.0 . 56.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (608.0 . 48.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((592.25 44.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 160.0) ( "-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((329.6875 154.6875 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (648.0 . 104.0) ("Garbage") 1.5625 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((595.6875 99.125 103.125 23.4375)) NIL)) (( 0.0 36.0 NIL) (WIRE ((592.0 . 104.0) (520.0 . 128.0)) 1 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 84.0 NIL) (WIRE ((592.0 . 104.0) (424.0 . 120.0)) 1 ((LINE 30.0 18.75) NIL) NIL))) (0 0 725.0 231.25) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 360.0) (224.0 . 304.0)) 2 NIL NIL)) ((.056 56.0 NIL) ( BOX (160.0 304.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 304.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 304.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (152.0 . 384.0) ( "After (RPLACD (CDR A) '((5 6)))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) (( 18.0 380.0 269.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 360.0) (384.0 . 304.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 360.0) (384.0 . 304.0)) 1 NIL NIL)) ((.056 56.0 NIL) ( BOX (480.0 304.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 360.0) (544.0 . 304.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 336.0) (616.0 . 336.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (640.0 . 328.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 ( BOLD REGULAR REGULAR)) ((624.25 324.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (512.0 . 328.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((489.75 322.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 336.0) (472.0 . 336.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 328.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 322.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 336.0) (152.0 . 336.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 56.0 NIL) (WIRE ((248.0 . 336.0) (248.0 . 224.0) (280.0 . 224.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.056 56.0 NIL) (BOX (288.0 192.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (288.0 192.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (320.0 . 216.0) ("-->7") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((298.1875 211.6875 45.3125 20.3125)) NIL)) (( 0.0 28.0 NIL) (WIRE ((352.0 . 248.0) (352.0 . 192.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE (( 352.0 . 248.0) (352.0 . 192.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (448.0 192.0 112.0 56.0) 2 )) ((.078125 18.75 NIL) (TEXT (480.0 . 216.0) ("-->8") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((457.5625 211.6875 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE (( 512.0 . 248.0) (512.0 . 192.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((544.0 . 224.0) (584.0 . 224.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (608.0 . 216.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((592.25 212.5 33.75 18.75)) NIL)) (( .0625 15.0 NIL) (TEXT (712.0 . 40.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((696.25 36.5 33.75 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((648.0 . 48.0) ( 688.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (552.0 16.0 112.0 56.0 ) 2)) ((0.0 28.0 NIL) (WIRE ((616.0 . 72.0) (616.0 . 16.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (584.0 . 40.0) ("-->6") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((562.5 35.375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((480.0 . 48.0) (544.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (392.0 16.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (392.0 16.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((456.0 . 72.0) (456.0 . 16.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 72.0) (456.0 . 16.0)) 1 NIL NIL)) ((.078125 18.75 NIL) (TEXT (424.0 . 40.0) ("-->5") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((401.5625 35.375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 328.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((329.6875 323.1875 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 328.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.3125 323.1875 45.3125 20.3125)) NIL)) ((.056 56.0 NIL) (BOX (368.0 104.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((432.0 . 160.0) (432.0 . 104.0)) 2 NIL NIL)) ((0.0 24.0 NIL) (WIRE ((376.0 . 216.0) (376.0 . 168.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((0.0 28.0 NIL) (WIRE ((400.0 . 136.0) (400.0 . 80.0)) 2 ( NIL (LINE 30.0 18.75)) NIL)) ((.0625 15.0 NIL) (TEXT (528.0 . 128.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((512.25 124.5 33.75 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((464.0 . 136.0) (504.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (632.0 . 264.0) ("Garbage") 1.5625 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((579.6875 259.125 103.125 23.4375)) NIL)) ((0.0 36.0 NIL) (WIRE ((576.0 . 272.0) (504.0 . 296.0)) 1 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 96.0 NIL) (WIRE ((576.0 . 264.0) ( 384.0 . 296.0)) 1 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 32.0 NIL) (WIRE ((568.0 . 264.0) ( 504.0 . 256.0)) 1 ((LINE 30.0 18.75) NIL) NIL))) (0 0 729.6875 399.75) 1.5625 8.0 (NCONC X1 X2 X3 ...)œ Like APPEND, but does not copy the lists before doing the list splicing. Example: 11_(SETQQ B (1 2)) (1 2) 12_(SETQQ C (3 4)) (3 4) 13_ (NCONC B C) (1 2 3 4) Note: No SETQ is necessary because the actual B list is changed. 14_ B (1 2 3 4) 15_ C (3 4) (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 152.0) (224.0 . 96.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 128.0) (312.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 96.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (200.0 . 168.0) ( "After (SETQQ B (1 2)) and (SETQQ C (3 4))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((17.0 164.0 366.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (328.0 8.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((392.0 . 64.0) (392.0 . 8.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((424.0 . 40.0) (464.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 32.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((472.25 28.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT ( 192.0 . 120.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 120.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (360.0 . 32.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((337.5 26.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE (( 256.0 . 40.0) (320.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT ( 40.0 . 120.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 116.0 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 128.0) (152.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 8.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (192.0 . 32.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((169.75 26.9375 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((224.0 . 64.0) ( 224.0 . 8.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 32.0) ("C") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((31.25 26.9375 18.75 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 40.0) (152.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 120.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((472.25 116.5 33.75 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((424.0 . 128.0) (464.0 . 128.0) ) 2 (NIL (LINE 30.0 12.0)) NIL))) (0 0 590.625 187.5) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 152.0) (224.0 . 96.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 128.0) (312.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 96.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (112.0 . 176.0) ( "After (NCONC B C)") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((31.0 172.0 162.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (328.0 8.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((392.0 . 64.0) (392.0 . 8.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((424.0 . 40.0) (464.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 32.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((472.25 28.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 120.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 120.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (360.0 . 32.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((337.5 26.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((256.0 . 40.0) ( 320.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 120.0) ( "B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 116.0 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 128.0) (152.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 8.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT ( 192.0 . 32.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((169.75 26.9375 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((224.0 . 64.0) (224.0 . 8.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 32.0) ("C") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((31.25 26.9375 18.75 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 40.0) (152.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 188.0 NIL) (WIRE ((408.0 . 128.0 ) (480.0 . 128.0) (480.0 . 80.0) (104.0 . 80.0) (104.0 . 64.0) (152.0 . 56.0)) 2 ((LINE 30.0 18.75) NIL) NIL))) (0 0 590.625 187.5) 1.5625 8.0 Some dangers in using the destructive functions If you are not careful, RPLACA, RPLACD, and NCONC can cause many strange things to happen to your list structures. Two of typical strnage things are changing things you didn't mean to change and circular list structures. Example: Changing what you didn't mean to change. Plan: you are going to change A, so you hold on to the original by SETQing B to the original value of A. 23_(SETQQ A (1 2 3)) (1 2 3) 24_ (SETQ B A) (1 2 3) 25_ (NCONC A '(4 5)) (1 2 3 4 5) 26_ A (1 2 3 4 5) 27_ B (1 2 3 4 5) Note that the NCONC effects the value of B even though it is not mentioned at all in the NCONC function call. (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 136.0) (224.0 . 80.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 112.0) (312.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 80.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 160.0) ( "After (SETQQ A (1 2 3))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((36.0 156.0 200.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 80.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 136.0) (544.0 . 80.0)) 2 NIL NIL) ) ((0.0 20.0 NIL) (WIRE ((576.0 . 112.0) (616.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ( (.0625 15.0 NIL) (TEXT (640.0 . 104.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 100.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 104.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 98.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 104.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 98.9375 45.3125 20.3125)) NIL)) (( .078125 18.75 NIL) (TEXT (512.0 . 104.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((489.75 98.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 112.0) (472.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 104.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 98.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 112.0) (152.0 . 112.0)) 2 ( NIL (LINE 30.0 12.0)) NIL))) (0 0 731.25 174.625) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 136.0) (224.0 . 80.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 112.0) (312.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 80.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 80.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 160.0) ( "After (SETQ B A)") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((64.0 156.0 144.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 136.0) (384.0 . 80.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (480.0 80.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 136.0) (544.0 . 80.0)) 2 NIL NIL)) (( 0.0 20.0 NIL) (WIRE ((576.0 . 112.0) (616.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) (( .0625 15.0 NIL) (TEXT (640.0 . 104.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 100.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 104.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 98.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 104.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 98.9375 45.3125 20.3125)) NIL)) (( .078125 18.75 NIL) (TEXT (512.0 . 104.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((489.75 98.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 112.0) (472.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 104.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 98.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 112.0) (152.0 . 112.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 56.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 51.5625 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 64.0) (152.0 . 96.0)) 2 (NIL (LINE 30.0 12.0)) NIL))) (0 0 731.25 175.0) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 200.0) (224.0 . 144.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 176.0) (312.0 . 176.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 144.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 144.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 144.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (136.0 . 224.0) ( "After (NCONC A '(4 5))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((40.0 220.0 192.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 200.0) (384.0 . 144.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 200.0) (384.0 . 144.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX ( 480.0 144.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 200.0) (544.0 . 144.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (192.0 . 168.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 162.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) ( TEXT (352.0 . 168.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ( (330.125 162.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (512.0 . 168.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((489.75 162.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 176.0) (472.0 . 176.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 168.0) ("A") 1.5625 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 162.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 176.0) (152.0 . 176.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 120.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 32.8125 115.5625 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 128.0) (152.0 . 160.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (712.0 . 64.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((696.25 60.5 33.75 18.75)) NIL)) (( 0.0 20.0 NIL) (WIRE ((648.0 . 72.0) (688.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((616.0 . 96.0) (616.0 . 40.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (584.0 . 64.0) ("-->5") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((562.5 59.3125 45.3125 20.3125)) NIL)) ((.056 56.0 NIL) (BOX (552.0 40.0 112.0 56.0) 2)) ((0.0 32.0 NIL) (WIRE ((480.0 . 72.0) (544.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 96.0) (456.0 . 40.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((456.0 . 96.0) (456.0 . 40.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (392.0 40.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (392.0 40.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (424.0 . 64.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((401.5625 59.3125 45.3125 20.3125)) NIL)) ((0.0 140.0 NIL) (WIRE ((568.0 . 176.0) (640.0 . 176.0) (640.0 . 120.0) ( 360.0 . 120.0) (360.0 . 72.0) (384.0 . 72.0)) 2 ((LINE 30.0 18.75) NIL) NIL))) (0 0 731.25 239.0) 1.5625 8.0 Second example: Circular lists. 43_(SETQQ B (1 2)) (1 2) 44_(SETQQ C (3 4)) (3 4) 45_ (NCONC B C B) (1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 ... forever!!!!!! 46_ B (1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 ... forever!!!!!! 46_ C (3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 ... forever!!!!!! (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 152.0) (224.0 . 96.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 128.0) (312.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 96.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 96.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (200.0 . 168.0) ( "After (SETQQ B (1 2)) and (SETQQ C (3 4))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((17.0 164.0 366.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 152.0) (384.0 . 96.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (328.0 8.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((392.0 . 64.0) (392.0 . 8.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((424.0 . 40.0) (464.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 32.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((472.25 28.5 33.75 18.75)) NIL)) ((.078125 18.75 NIL) (TEXT ( 192.0 . 120.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((170.75 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (352.0 . 120.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((330.125 114.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (360.0 . 32.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((337.5 26.9375 45.3125 20.3125)) NIL)) ((0.0 32.0 NIL) (WIRE (( 256.0 . 40.0) (320.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT ( 40.0 . 120.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 116.0 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 128.0) (152.0 . 128.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 8.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (192.0 . 32.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((169.75 26.9375 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((224.0 . 64.0) ( 224.0 . 8.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 32.0) ("C") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((31.25 26.9375 18.75 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 40.0) (152.0 . 40.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (488.0 . 120.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((472.25 116.5 33.75 18.75)) NIL)) ((0.0 20.0 NIL) (WIRE ((424.0 . 128.0) (464.0 . 128.0) ) 2 (NIL (LINE 30.0 12.0)) NIL))) (0 0 590.625 187.5) 1.5625 8.0 (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 160.0) (224.0 . 104.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 136.0) (312.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 104.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 104.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 104.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (104.0 . 208.0) ( "After (NCONC B C B)") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((14.0 204.0 180.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 160.0) (384.0 . 104.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 160.0) (384.0 . 104.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (328.0 16.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((392.0 . 72.0) (392.0 . 16.0)) 2 NIL NIL)) (( .078125 18.75 NIL) (TEXT (192.0 . 128.0) ("-->1") 1.5625 (CENTER BASELINE) (HELVETICA 10 ( BOLD REGULAR REGULAR)) ((170.75 122.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT ( 352.0 . 128.0) ("-->2") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) (( 330.125 122.9375 45.3125 20.3125)) NIL)) ((.078125 18.75 NIL) (TEXT (360.0 . 40.0) ("-->4") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((337.5 34.9375 45.3125 20.3125) ) NIL)) ((0.0 32.0 NIL) (WIRE ((256.0 . 48.0) (320.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL) ) ((.078125 18.75 NIL) (TEXT (40.0 . 128.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 ( BOLD REGULAR REGULAR)) ((32.8125 124.0 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 136.0) (152.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 16.0 112.0 56.0) 2)) ((.078125 18.75 NIL) (TEXT (192.0 . 40.0) ("-->3") 1.5625 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((169.75 34.9375 45.3125 20.3125)) NIL)) ((0.0 28.0 NIL) (WIRE ((224.0 . 72.0) (224.0 . 16.0)) 2 NIL NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 40.0) ("C") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((31.25 34.9375 18.75 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 48.0) (152.0 . 48.0)) 2 (NIL (LINE 30.0 12.0 )) NIL)) ((0.0 188.0 NIL) (WIRE ((408.0 . 136.0) (480.0 . 136.0) (480.0 . 88.0) (104.0 . 88.0) (104.0 . 72.0) (152.0 . 64.0)) 2 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 220.0 NIL) (WIRE ((424.0 . 48.0) (528.0 . 48.0) (528.0 . 176.0) (88.0 . 176.0) (88.0 . 160.0) (144.0 . 160.0)) 2 ((LINE 30.0 18.75) NIL) NIL))) (0 0 587.5 222.0625) 1.5625 8.0 Representing Datatypes and Arrays Datatypes and Arrays can be modelled as a fixed-length one-dimensional vector of cells, each of which contains a pointer to some Lisp data object. Note: the cells are NOT CONS cells because they contain only a single pointer. For arrays, the cells are index by number. For Datatypes, the cells are indexed by field name. Example: 55_(SETQ Arr (ARRAY 5)) {Array}#6,12345 56_(FOR X IN '(55 77 23 45 (12 14)) AS I FROM 1 DO (SETA Arr I X)) NIL (NIL ((.05 12.0 NIL) (TEXT (16.0 . 208.0) ("Arr") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((5.0 205.0 23.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((32.0 . 208.0) (88.0 . 208.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (88.0 . 144.0) ("2:") 1.0 (CENTER BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((82.0 141.0 13.0 13.0)) NIL)) ((.05 12.0 NIL) (TEXT (88.0 . 184.0) ("1:") 1.0 (CENTER BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((82.0 181.0 13.0 13.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 168.0 88.0 40.0) 2)) ( (0.0 36.0 NIL) (WIRE ((136.0 . 144.0) (208.0 . 144.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((136.0 . 184.0) (208.0 . 184.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 128.0 88.0 40.0) 2)) ((.04 44.0 NIL) (BOX (96.0 88.0 88.0 40.0) 2)) ((.05 12.0 NIL) (TEXT (88.0 . 104.0) ("3:") 1.0 (CENTER BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((82.0 101.0 13.0 13.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((136.0 . 104.0) ( 208.0 . 104.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 48.0 88.0 40.0) 2)) ((.05 12.0 NIL) (TEXT (88.0 . 64.0) ("4:") 1.0 (CENTER BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((82.0 61.0 13.0 13.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((136.0 . 64.0) (208.0 . 64.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 8.0 88.0 40.0) 2)) (( .05 12.0 NIL) (TEXT (224.0 . 64.0) ("45") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((215.0 61.0 18.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (224.0 . 104.0) ("23") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((215.0 101.0 18.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (224.0 . 144.0) ("77") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((215.0 141.0 18.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (88.0 . 24.0) ("5:") 1.0 ( CENTER BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((82.0 21.0 13.0 13.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((136.0 . 24.0) (208.0 . 24.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.031 35.5 NIL) (BOX (216.0 16.0 71.0 31.0) 2)) ((0.0 16.0 NIL) (WIRE ((264.0 . 48.0) (264.0 . 16.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((272.0 . 32.0) (312.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (240.0 . 24.0) ("--> 12") 1.0 (CENTER BASELINE) (HELVETICA 14 ( BOLD REGULAR REGULAR)) ((219.0 21.0 43.0 15.0)) NIL)) ((.031 35.5 NIL) (BOX (312.0 16.0 71.0 31.0) 2)) ((0.0 16.0 NIL) (WIRE ((360.0 . 48.0) (360.0 . 16.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((368.0 . 32.0) (408.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) ( TEXT (336.0 . 24.0) ("--> 14") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 315.0 21.0 43.0 15.0)) NIL)) ((.05 12.0 NIL) (TEXT (424.0 . 32.0) ("NIL") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((411.0 29.0 27.0 15.0)) NIL))) (0 0 438.0 221.0) 1.0 8.0 Second example: 34_(DATATYPE LC.Name (First Last Middle)) LC.Name 35_(SETQ Nm (CREATE LC.Name First _ Frank Last _ Halasz)) {LC.Name}#34,12378 (NIL ((.05 12.0 NIL) (TEXT (16.0 . 136.0) ("Nm") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((4.0 133.0 25.0 15.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((32.0 . 136.0) (88.0 . 136.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 96.0 88.0 40.0) 2)) ((0.0 36.0 NIL) (WIRE ((136.0 . 72.0) (208.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 36.0 NIL) (WIRE ((136.0 . 112.0) (208.0 . 112.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.04 44.0 NIL) (BOX (96.0 56.0 88.0 40.0) 2)) ((.04 44.0 NIL) (BOX (96.0 16.0 88.0 40.0) 2)) ( (0.0 36.0 NIL) (WIRE ((136.0 . 32.0) (208.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (88.0 . 112.0) ("First:") 1.0 (RIGHT BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((52.0 109.0 36.0 13.0)) NIL)) ((.05 12.0 NIL) (TEXT (88.0 . 72.0) ("Middle:") 1.0 (RIGHT BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((36.0 69.0 52.0 13.0)) NIL)) (( .05 12.0 NIL) (TEXT (88.0 . 32.0) ("Last:") 1.0 (RIGHT BASELINE) (HELVETICA 12 (MEDIUM REGULAR REGULAR)) ((53.0 29.0 35.0 13.0)) NIL)) ((.05 15.0 NIL) (TEXT (224.0 . 104.0) ( "Frank") 1.0 (LEFT BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((224.0 101.0 44.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (224.0 . 64.0) ("NIL") 1.0 (LEFT BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((224.0 61.0 27.0 15.0)) NIL)) ((.05 15.0 NIL) (TEXT (224.0 . 24.0) ( "Halasz") 1.0 (LEFT BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((224.0 21.0 50.0 15.0)) NIL))) (0 0 287.0 148.0) 1.0 8.0 Representing Strings The internal representation of a string has two parts: a string pointer and a character vector. The string pointer is a cell (not a CONS cell) containing two things: 1. The number of characters in the string. 2. A pointer to the start of the characters for this string in the character vector. The character vector is just a sequence of characters. A pointer to a string is a pointer to the string's string pointer. Example: (SETQ Foo "this is a string") (NIL ((.05 12.0 NIL) (TEXT (16.0 . 76.0) ("Foo") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((1.0 73.0 30.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("16") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((103.0 61.0 18.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 64.0) (184.0 . 64.0) (184.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.024 116.0 NIL) (TEXTBOX (180.0 4.0 232.0 24.0) ( " t | h | i | s | | i | s | | a | | s | t | r | i | n | g |") 1.0 (LEFT CENTER) (HELVETICA 10 ) ((182.0 10.0 227.0 12.0)) NIL 1))) (0 0 413.0 88.0) 1.0 4.0 There can be more characters in the character vector that there in the string. Example: (SETQ Bar (SUBSTRING Foo 11)) returns "string". (NIL ((.05 12.0 NIL) (TEXT (16.0 . 76.0) ("Bar") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((3.0 73.0 26.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("5") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 88.0 NIL) (WIRE ((152.0 . 64.0) (328.0 . 64.0) (328.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.024 116.0 NIL) (TEXTBOX (180.0 4.0 232.0 24.0) ( " t | h | i | s | | i | s | | a | | s | t | r | i | n | g |") 1.0 (LEFT CENTER) (HELVETICA 10 ) ((182.0 10.0 227.0 12.0)) NIL 1))) (0 0 413.0 88.0) 1.0 4.0 Some functions that create and return strings create only a new string pointer and use an old character vector. Other functions create both a new string pointer and a new character vector. As shown above, SUBSTRING creates just a new string pointer and uses the old charactre vector. MKSTRING and ALLOCSTRING create both string pointers and character vectors. There are destructive string functions analogous to RPLACA, etc. for lists. These are GNC, GLC, and RPLSTRING. GNC œ returns the first character of a string (as an atom) and then removes that character from the string by updating the string pointer. If the argument is not a string, it is made into a string using its print name. Example: 12_(SETQ S "abcd") "abcd" 13_(GNC S) a 14_S "bcd" 15_ (GNC S) b 16_ S "cd" (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("4") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 64.0) (184.0 . 64.0) (184.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 84.0 . 108.0) ("After (SETQ S %"abcd%")") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((15.0 105.0 138.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("3") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 26.0 NIL) (WIRE ((152.0 . 64.0) (204.0 . 64.0) (204.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 84.0 . 108.0) ("After first (GNC S)") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR) ) ((25.0 105.0 119.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("2") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 34.0 NIL) (WIRE ((152.0 . 64.0) (220.0 . 64.0) (220.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 108.0 . 104.0) ("After second (GNC S)") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((42.0 101.0 133.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 GLC œ returns the last character of a string (as an atom) and then removes that character from the string by updating the string pointer. If the argument is not a string, it is made into a string using its print name. Example: 12_(SETQ S "abcd") "abcd" 13_(GLC S) d 14_S "abc" 15_ (GLC S) c 16_ S "ab" (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("4") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 64.0) (184.0 . 64.0) (184.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 84.0 . 108.0) ("After (SETQ S %"abcd%")") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((15.0 105.0 138.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("3") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 64.0) (188.0 . 64.0) (188.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 84.0 . 108.0) ("After first (GLC S)") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR) ) ((26.0 105.0 117.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 (NIL ((.05 12.0 NIL) (TEXT (24.0 . 76.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 73.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 80.0) (80.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 64.0) ("2") 1.0 ( CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 61.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 64.0) (188.0 . 64.0) (188.0 . 28.0)) 2 (NIL (LINE 30.0 12.0)) NIL )) ((.03 41.0 NIL) (BOX (88.0 52.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 84.0) ( 132.0 . 52.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 8.0 72.0 20.0) (" a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 12.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT ( 108.0 . 104.0) ("After second (GLC S)") 1.0 (CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((43.0 101.0 131.0 13.0)) NIL))) (0 0 396.0 118.0) 1.0 4.0 (RPLSTRING String1 N String2) œ changes the character vector of String1 to include the characters in String2, starting at position N in the String1. N can be negative just as in SUBSTRING. If String1 and/or String1 are not strings, they are made into strings using their print names. Example: 12_(SETQ S "abcd") "abcd" 13_(SETQ R (SUBSTRING S 2)) "bcd" 14_ (RPLSTRING S 2 "xy") "axyd" 15_ S "axyd" Note: since RPLSTRING is destructive, R is messed up too. 16_ R "xyd" (NIL ((.05 12.0 NIL) (TEXT (24.0 . 128.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 125.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 132.0) (80.0 . 132.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 116.0) ("4") 1.0 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 113.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 116.0) (184.0 . 116.0) (184.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.03 41.0 NIL) (BOX (88.0 104.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 136.0) (132.0 . 104.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 60.0 72.0 20.0) ( " a | b | c | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 64.0 63.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT (180.0 . 160.0) ("After (SETQ S %"abcd%") and (SETQ R (SUBSTRING S 1))") 1.0 ( CENTER BASELINE) (HELVETICA 10 (BOLD REGULAR REGULAR)) ((17.0 157.0 327.0 13.0)) NIL)) ((.05 12.0 NIL) (TEXT (20.0 . 28.0) ("R") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((14.0 25.0 12.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((32.0 . 32.0) (76.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.03 41.0 NIL) (BOX (84.0 8.0 82.0 30.0) 2)) ((.05 12.0 NIL) ( TEXT (108.0 . 20.0) ("3") 1.0 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) (( 104.0 17.0 9.0 15.0)) NIL)) ((0.0 16.0 NIL) (WIRE ((128.0 . 40.0) (128.0 . 8.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((148.0 . 24.0) (204.0 . 24.0) (204.0 . 56.0)) 2 (NIL (LINE 30.0 12.0)) NIL))) (0 0 396.0 173.0) 1.0 4.0 (NIL ((.05 12.0 NIL) (TEXT (24.0 . 128.0) ("S") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((19.0 125.0 11.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((36.0 . 132.0) (80.0 . 132.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.05 12.0 NIL) (TEXT (112.0 . 116.0) ("4") 1.0 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((108.0 113.0 9.0 15.0)) NIL)) ((0.0 18.0 NIL) (WIRE ((152.0 . 116.0) (184.0 . 116.0) (184.0 . 80.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.03 41.0 NIL) (BOX (88.0 104.0 82.0 30.0) 2)) ((0.0 16.0 NIL) (WIRE ((132.0 . 136.0) (132.0 . 104.0)) 1 NIL NIL)) ((.02 36.0 NIL) (TEXTBOX (176.0 60.0 72.0 20.0) ( " a | x | y | d") 1.0 (LEFT CENTER) (HELVETICA 10) ((178.0 64.0 62.0 12.0)) NIL 1)) ((.05 12.0 NIL) (TEXT (100.0 . 160.0) ("After (RPLSTRING S 2 %"xy%")") 1.0 (CENTER BASELINE) ( HELVETICA 10 (BOLD REGULAR REGULAR)) ((15.0 157.0 171.0 13.0)) NIL)) ((.05 12.0 NIL) (TEXT ( 20.0 . 28.0) ("R") 1.0 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((14.0 25.0 12.0 15.0)) NIL)) ((0.0 22.0 NIL) (WIRE ((32.0 . 32.0) (76.0 . 32.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.03 41.0 NIL) (BOX (84.0 8.0 82.0 30.0) 2)) ((.05 12.0 NIL) (TEXT (108.0 . 20.0) ("3") 1.0 (CENTER BASELINE) (HELVETICA 14 (MEDIUM REGULAR REGULAR)) ((104.0 17.0 9.0 15.0)) NIL)) ((0.0 16.0 NIL) (WIRE ((128.0 . 40.0) (128.0 . 8.0)) 1 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((148.0 . 24.0) (204.0 . 24.0) (204.0 . 56.0)) 2 (NIL (LINE 30.0 12.0)) NIL))) (0 0 396.0 173.0) 1.0 4.0 Sameness and Equality in Lisp: EQ versus EQUAL Consider the following: 1_(SETQ A (LIST 1 2 3)) (1 2 3) 2_ (SETQ B (LIST 1 2 3)) (1 2 3) Do A and B have the same value? Are the values of A and B equal? By most peoples definition, the answer is Yes. But in Lisp, the answer is it depends what you mean by equal. The values of A and B are equal in the sense that they are both lists containing the identical sequence of items. The values of A and B are NOT equal in the sense that they are made up of entirely different CONS cells. This is because the function LITS works by creating new CONS cells to make a list out of its arguments (see above). The situation is clear if you diagram the two lists. (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 232.0) (224.0 . 176.0)) 2 NIL NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 208.0) (312.0 . 208.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX (160.0 176.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 176.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 176.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (248.0 . 256.0) ( "After (SETQ A (LIST 1 2 3)) and (SETQ B (LIST 1 2 3))") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((19.0 252.0 459.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 232.0) ( 384.0 . 176.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 232.0) (384.0 . 176.0)) 1 NIL NIL) ) ((.056 56.0 NIL) (BOX (480.0 176.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 232.0 ) (544.0 . 176.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 208.0) (616.0 . 208.0)) 2 ( NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (640.0 . 200.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 196.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 208.0) (472.0 . 208.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 200.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR) ) ((32.875 194.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 208.0) (152.0 . 208.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 40.0) ("B") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 35.0625 17.1875 23.4375)) NIL)) ((.056 56.0 NIL) (BOX (160.0 16.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE (( 224.0 . 72.0) (224.0 . 16.0)) 2 NIL NIL)) ((.056 56.0 NIL) (BOX (320.0 16.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 16.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((384.0 . 72.0) ( 384.0 . 16.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 72.0) (384.0 . 16.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (480.0 16.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 72.0) ( 544.0 . 16.0)) 2 NIL NIL)) ((.0625 15.0 NIL) (TEXT (640.0 . 40.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 36.5 33.75 18.75)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 48.0) (152.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) ( WIRE ((248.0 . 48.0) (312.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 48.0) (472.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 20.0 NIL) (WIRE (( 576.0 . 48.0) (616.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((192.0 . 208.0) (192.0 . 152.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) (TEXT ( 192.0 . 120.0) ("1") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((185.9375 114.9375 14.0625 23.4375)) NIL)) ((0.0 28.0 NIL) (WIRE ((192.0 . 48.0) (192.0 . 104.0)) 2 ( (LINE 30.0 18.75) NIL) NIL)) ((0.0 28.0 NIL) (WIRE ((360.0 . 208.0) (360.0 . 152.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) (TEXT (360.0 . 120.0) ("2") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((353.125 114.75 14.0625 23.4375)) NIL)) ((0.0 28.0 NIL) (WIRE ((360.0 . 48.0) (360.0 . 104.0)) 2 ((LINE 30.0 18.75) NIL) NIL)) ((0.0 28.0 NIL) (WIRE ((512.0 . 208.0) (512.0 . 152.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) (TEXT (512.0 . 120.0) ("3") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((506.25 114.75 14.0625 23.4375)) NIL)) ((0.0 28.0 NIL) (WIRE ((512.0 . 48.0) ( 512.0 . 104.0)) 2 ((LINE 30.0 18.75) NIL) NIL))) (0 0 731.25 274.125) 1.5625 8.0 Contrast the previous situation with the following situation: 1_(SETQ A (LIST 1 2 3)) (1 2 3) 2_ (SETQ B A) (1 2 3) Do A and B have the same value? Are the values of A and B equal? By most peoples definition, the answer is Yes. And in Lisp, the answer is Yes. The values of A and B are equal in the sense that they are both lists containing the identical sequence of items. The values of A and B are also equal in the sense that they are made up of exaclty the same CONS cells. This is because the function SETQ just sets the value of its first argument to be its second argument without creating any new structures (see above). The situation is clear if you diagram the list. (NIL ((0.0 28.0 NIL) (WIRE ((224.0 . 96.0) (224.0 . 40.0)) 2 NIL NIL)) ((0.0 32.0 NIL) (WIRE ((248.0 . 72.0) (312.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.056 56.0 NIL) (BOX ( 160.0 40.0 112.0 56.0) 2)) ((.056 56.0 NIL) (BOX (320.0 40.0 112.0 56.0) 1)) ((.056 56.0 NIL) (BOX (320.0 40.0 112.0 56.0) 2)) ((.05 15.0 NIL) (TEXT (224.0 . 136.0) ( "After (SETQ A (LIST 1 2 3)) and (SETQ B A)") 1.0 (CENTER BASELINE) (HELVETICA 18 (BOLD REGULAR REGULAR)) ((38.0 132.0 372.0 19.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 96.0) (384.0 . 40.0)) 2 NIL NIL)) ((0.0 28.0 NIL) (WIRE ((384.0 . 96.0) (384.0 . 40.0)) 1 NIL NIL)) ((.056 56.0 NIL) (BOX (480.0 40.0 112.0 56.0) 2)) ((0.0 28.0 NIL) (WIRE ((544.0 . 96.0) (544.0 . 40.0)) 2 NIL NIL)) ((0.0 20.0 NIL) (WIRE ((576.0 . 72.0) (616.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.0625 15.0 NIL) (TEXT (640.0 . 64.0) ("NIL") 1.25 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((624.25 60.5 33.75 18.75)) NIL)) ((0.0 32.0 NIL) (WIRE ((408.0 . 72.0) (472.0 . 72.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 80.0) ("A") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.875 74.8125 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 88.0) (152.0 . 88.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((.078125 18.75 NIL) (TEXT (40.0 . 40.0) ("B") 1.5625 (CENTER BASELINE) ( HELVETICA 14 (BOLD REGULAR REGULAR)) ((32.8125 35.0625 17.1875 23.4375)) NIL)) ((0.0 48.0 NIL) (WIRE ((56.0 . 48.0) (152.0 . 48.0)) 2 (NIL (LINE 30.0 12.0)) NIL)) ((0.0 28.0 NIL) (WIRE ((192.0 . 72.0) (192.0 . 16.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) ( TEXT (192.0 . -16.0) ("1") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) (( 185.9375 -21.0625 14.0625 23.4375)) NIL)) ((0.0 28.0 NIL) (WIRE ((360.0 . 72.0) (360.0 . 16.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) (TEXT (360.0 . -16.0) ("2") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((353.125 -21.25 14.0625 23.4375 )) NIL)) ((0.0 28.0 NIL) (WIRE ((512.0 . 72.0) (512.0 . 16.0)) 2 (NIL (LINE 30.0 18.75)) NIL)) ((.078125 23.4375 NIL) (TEXT (512.0 . -16.0) ("3") 1.5625 (CENTER BASELINE) (HELVETICA 14 (BOLD REGULAR REGULAR)) ((506.25 -21.25 14.0625 23.4375)) NIL))) (0 0 729.6875 167.125) 1.5625 8.0 Lisp has two concepts of sameness or equality: 1) containing the same "information" 2) being exactly the same data objects Data objects in Lisp can be equal in the first sense without being equal in the second sense. The opposite is NOT true › identical data object always contain the same "information". EQ œ returns T if its two arguments are pointers to the exact same internal data object. NIL, otherwise. EQUAL œ returns T if its two arguments are the same type of data object and contain the same information. NIL, otherwise. Same information is determined as follows: 1) The two arguments are EQ 2) The two arguments are equal numbers 3) The two arguments are strings that are STREQUAL (have the same sequence of characters). 4) The two arguments are lists, where the CARs are EQUAL and the CDRs are EQUAL. Basically, two lists are EQUAL if they contain the same set of atoms within the same list format. Examples: The results of (LIST 1 2 3) and (LIST 1 2 3) are EQUAL but not EQ. The results of (LIST 1 (LIST 2 3)) and (LIST 1 (LIST 2 3)) are EQUAL but not EQ. The results of (MKSTRING 'AB) and (MKSTRING 'AB) are EQUAL but not EQ. Following (SETQ A B), (EQ A B) and (EQUAL A B) return T. If A points to a list, (EQ (CDDR A) (CDR (CDR A)) ) is T. If A points to a list, (EQ (CDR (CONS 1 A)) A) is T. If A points to a list, (EQ (RPLACA A 1) A) is T. If A points to a list, (EQ (CONS 22 A)(CONS 22 A)) is NIL, but (EQUAL (CONS 22 A)(CONS 22 A)) is T. (EQ 'Atom 'Atom) is always T. For integers less than 65,000, (EQ SmallInteger SmallInteger) is T. For larger integers and for floating numbers, (EQ Number Number) is generally NIL, but (EQUAL Number Number) is T. As a general rule, use EQUAL unless you know you want to test for the same exact data structure or you are comparing atoms. References CONS cells and lists represented as CONS cells is covered in: Winston & Horn, Chapter 9 Touretzky, Chapter 2 RPLACA, et al. are covered in Section 2.5 of the IRM. GNC et al. are covered in Section 2.6 of the IRM. EQ et al. are covered in Section 2.2 of the IRM and in Touretzky, page 155 and in Winston and Horn, page 142. Exercises Attached.(LIST ((PAGE NIL NIL (0 0 17 22) ((HEADING NIL (HEADINGTYPE YYY) (540 756 72 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL))) (PAGE NIL NIL (0 0 17 22) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 SIZE 12 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (468 756 72 36) NIL) (HEADING NIL (HEADINGTYPE XXX) (72 756 72 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL))) (PAGE NIL NIL (0 0 17 22) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 SIZE 12 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (468 756 72 36) NIL) (HEADING NIL (HEADINGTYPE XXX) (72 756 72 36) NIL) (TEXT NIL NIL (72 72 468 648) NIL)))))*$$$$HHHHHH$$HH HHHH$$$$ ll  llll HH llHH $$ $$$$$$ HHHHHH $$ˆ PAGEHEADINGXXXH PAGEHEADINGYYY TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN TIMESROMAN *)4(4' !ˇ#€"u#b '"’#"d$f%: "'&1!~"G  T SKIO.GETFN.2 TIMESROMAN "+15(  SKIO.GETFN.2 TIMESROMAN "B%{'b  A  # #ş SKIO.GETFN.2 TIMESROMAN i#VX#Y#|p8  S"ľ SKIO.GETFN.2 TIMESROMAN ^ K7ę SKIO.GETFN.2 TIMESROMAN 0  < <ŕ SKIO.GETFN.2 TIMESROMAN  ?0-Ps%  ă SKIO.GETFN.2 TIMESROMAN #- * SKIO.GETFN.2 TIMESROMAN +Đ SKIO.GETFN.2 TIMESROMAN 5  SKIO.GETFN.2 TIMESROMAN >QQœ F SKIO.GETFN.2 TIMESROMAN 'p¨ *Č SKIO.GETFN.2 TIMESROMAN *€ SKIO.GETFN.2 TIMESROMAN  Ô;)Bi < I SKIO.GETFN.2 TIMESROMAN  B%ƒ .#" SKIO.GETFN.2 TIMESROMAN 73%  ?  ť SKIO.GETFN.2 TIMESROMAN  Î SKIO.GETFN.2 TIMESROMAN ő SKIO.GETFN.2 TIMESROMAN % ?  ť SKIO.GETFN.2 TIMESROMAN  “ SKIO.GETFN.2 TIMESROMAN B SKIO.GETFN.2 TIMESROMAN  L  A  ô SKIO.GETFN.2 TIMESROMAN  ‚ SKIO.GETFN.2 TIMESROMAN 1s%j2i           nť SKIO.GETFN.2 TIMESROMAN š SKIO.GETFN.2 TIMESROMAN  ˇ SKIO.GETFN.2 TIMESROMAN    ô SKIO.GETFN.2 TIMESROMAN  9 SKIO.GETFN.2 TIMESROMAN #&”N&`&    C  d SKIO.GETFN.2 TIMESROMAN & *  :  u SKIO.GETFN.2 TIMESROMAN 9#4,V##C h SKIO.GETFN.2 TIMESROMAN O  f SKIO.GETFN.2 TIMESROMAN  ž$_$L pŮ   Ý SKIO.GETFN.2 TIMESROMAN Ů SKIO.GETFN.2 TIMESROMAN Ű SKIO.GETFN.2 TIMESROMAN Ř   Ý SKIO.GETFN.2 TIMESROMAN Ů SKIO.GETFN.2 TIMESROMAN Ű SKIO.GETFN.2 TIMESROMAN  "+F : SKIO.GETFN.2 TIMESROMAN h SKIO.GETFN.2 TIMESROMAN /&#B#*:rŢ5 SKIO.GETFN.2 TIMESROMAN >#B#*r0 ě SKIO.GETFN.2 TIMESROMAN  /#&#'ˇhS'[Qb CQG9:51d$  2 | &>&6&2&n' ! č<4zš