about summary refs log tree commit diff stats
path: root/dbc2.lsp
diff options
context:
space:
mode:
authorDarren Bane <darren.bane@emdalo.com>2021-02-03 13:37:05 +0000
committerDarren Bane <darren.bane@emdalo.com>2021-02-03 13:37:05 +0000
commit7d8b2e2771e285aeac26e56feafdbf4eb155ab38 (patch)
tree942623117da0e15ddfa8191e5a0c9fb042c4c698 /dbc2.lsp
parent9afa76a988bc71737cb167b340bd2973a7aaaa2a (diff)
parentdbb7e6694c351ea0bd78d8405e5fe852f6de04b2 (diff)
downloadlsp-7d8b2e2771e285aeac26e56feafdbf4eb155ab38.tar.gz
Merge branch 'master' of tilde.institute:public_repos/lsp
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 '())