about summary refs log tree commit diff stats
path: root/cdbc.lisp
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 '())