blob: 9d790abd9dd647412997e5f320360f254d57d82d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
|
;; Ported from https://rosettacode.org/wiki/Assertions_in_design_by_contract#Eiffel
;; Arguably not *quite* design-by-contract, but very close in vanilla CL
(defun average-of-absolutes (values)
(declare (list values))
(assert (> (length values) 0))
(let ((res (/ (reduce #'+ (mapcar #'abs values)) (length values))))
(assert (>= res 0))
(the fixnum res)))
;; (average-of-absolutes '(1 3))
;; (average-of-absolutes '())
|