(setf *load-print* T)

(defun rev (x) 
  (declare (list x))
  (
   if (not x) 
      nil
    (if (listp (car x)) 
      (nconc (rev (cdr x)) (list (rev (car x))))
      (nconc (rev (cdr x)) (list (car x)))
    )      

  )
)

(setf revlist '(1 (2 3) (((5 4) 6 (1 3)))))
(rev revlist)

(defun average (x)
  (declare (list x))
  (/ 
   (loop for i in x sum i)
   (length x)
   )
)

(setf ave '(1 4 .7  1/3))
(average ave)

(defun sum (x) 
  (if (eq (cdr x) NIL)
      (car x)
    (setf (car x) (+ (car (reverse x)) (sum (reverse (cdr (reverse x))))))
    )
  )

(defun average2 (x)
  (/ (sum x) (length x))
  )

(setf ave '(1 4 .7  1/3))
(average2 ave)

(defun average3 (x)
  (/ (apply (function +) x) (length x))
  )

(setf ave '(1 4 .7  1/3))
(average3 ave)

; Loading #p"/tmp_mnt/c1/malibu/tas/fischman/h02-solved".
; REV
Warning:  Declaring REVLIST special.
; (1 (2 3) (((5 4) 6 (1 3))))
; ((((3 1) 6 (4 5))) (3 2) 1)
; AVERAGE
Warning:  Declaring AVE special.
; (1 4 0.7 1/3)
; 1.5083333
; SUM
; AVERAGE2
; (1 4 0.7 1/3)
; 1.5083333
; AVERAGE3
; (1 4 0.7 1/3)
; 1.5083333