blob: 477dc388c205dbe828a8badd051b3abde16b6faa (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
(defmacro unless (test :rest body)
`(if (not ,test) (progn ,@body)))
;;(defun reduce (function sequence)
;; (let ((res 0))
;; (for ((xs sequence (cdr xs)))
;; ((null xs) res)
;; (setq res (+ res (car xs))))))
;;(reduce #'+ (map '<list> #'abs values))
(defun sum (sequence)
(let ((res 0))
(for ((xs sequence (cdr xs)))
((null xs) res)
(setq res (+ res (car xs))))))
(defun average-of-absolutes (values)
(the <list> values)
(unless (> (length values) 0)
(error "average-of-absolutes requires non-null list" values))
(let ((res (quotient (sum values) (length values))))
(unless (>= res 0)
(error "average-of-absolutes must ensure positive result" res))
(the <fixnum> res)))
;; (average-of-absolutes '(1 3))
;; (average-of-absolutes '())
|