(import "macro") ; For unless (defmacro assert (test) `(unless ,test (error "assert: value is false." ',test))) (defun my-sum (sequence) (let ((res 0)) (for ((xs sequence (cdr xs))) ((null xs) res) (setq res (+ res (car xs)))))) (defun average-of-absolutes (values) (assure values) ;; requires non-null list (assert (> (length values) 0)) (let ((res (quotient (my-sum (mapcar #'abs values)) (length values)))) ;; must ensure positive result (assert (>= res 0)) (assure res))) ;; (average-of-absolutes '(1 3)) ;; (average-of-absolutes '())