title: Pointers in Common Lisp
body: <p>I want to save a reference (pointer) to a part of some Data I saved in another variable:</p>
  
  <pre><code>(let ((a (list 1 2 3)))
    (let ((b (car (cdr a)))) ;here I want to set b to 2, but it is set to a copy of 2
      (setf b 4))
    a) ;evaluates to (1 2 3) instead of (1 4 2)
  </code></pre>
  
  <p>I could use macros, but then there would ever be much code to be executed if I want to change some Data in the middle of a list and I am not very flexible:</p>
  
  <pre><code>(defparameter *list* (create-some-list-of-arrays))
  (macrolet ((a () '(nth 1000 *list*)))
    (macrolet ((b () `(aref 100 ,(a))))
      ;; I would like to change the macro a here if it were possible
      ;; but then b would mean something different
      (setf (b) "Hello")))
  </code></pre>
  
  <p>Is it possible, to create a variable as a reference and not as a copy?</p>