about summary refs log blame commit diff stats
path: root/dbc2.lsp
blob: 477dc388c205dbe828a8badd051b3abde16b6faa (plain) (tree)






















                                                                     
(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 '())