about summary refs log tree commit diff stats
path: root/dbc2.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'dbc2.lsp')
-rw-r--r--dbc2.lsp23
1 files changed, 23 insertions, 0 deletions
diff --git a/dbc2.lsp b/dbc2.lsp
new file mode 100644
index 0000000..477dc38
--- /dev/null
+++ b/dbc2.lsp
@@ -0,0 +1,23 @@
+(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 '())