title: LISP: Reversing a List in LISP using RPLACA/RPLACD/NCONC
body: <p>So I'm trying to make a function takes in a list and reverses in place it but I'm not sure how I would use the <code>RPLACA</code>/<code>RPLACD</code>/<code>NONC</code>.  Basically does the same thing as reverse but  it uses the cons nodes of the original list and does not allocate any new cons nodes. What I have so far is</p>
  
  <pre><code>(defun rip(lst)
  (cond   (( null lst) 0)
      ((eq (nil) (cdr (last lst))) 1)
      (((setq x (car (last lst)))
       (rplaca (car (last lst)) (car first lst))
       (rplaca (car first lst) x)) + 2 rip(butlast(rest lst)))))
  </code></pre>