(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