blob: 552bc44672197057e1350b1d215678b7365a9a8a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
(defmacro unless (test :rest body)
`(if (not ,test) (progn ,@body)))
(defmacro assert (test)
`(unless ,test
(error "assert: value is false." ',test)))
(defun sum (sequence)
(let ((res 0))
(for ((xs sequence (cdr xs)))
((null xs) res)
(setq res (+ res (car xs))))))
(defun average-of-absolutes (values)
(assure <list> values)
;; requires non-null list
(assert (> (length values) 0))
(let ((res (quotient (sum (mapcar #'abs values)) (length values))))
;; must ensure positive result
(assert (>= res 0))
(assure <float> res)))
;; (average-of-absolutes '(1 3))
;; (average-of-absolutes '())
|