3.12 Exercise 3.12
TODO: Still no diagrams
Suppose we evaluate (define x (list ’a ’b)).
When we evaluate (cdr x) the first time, we get the list ’(b ()), which is the cdr that x was defined with.
Then suppose we evaluate (define x (append! x y)), where y was defined to be (list ’c ’d). This sets the nil pointer that followed the ’b in x to now point to the list y. So now, (cdr x) evaluates to ’(b (c (d ()))).