From 0c2561d21d59254669dea0b662946d82fcc7c50c Mon Sep 17 00:00:00 2001 From: Darren Bane Date: Fri, 14 May 2021 23:42:35 +0100 Subject: Update DbC --- dbc2.lsp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/dbc2.lsp b/dbc2.lsp index 552bc44..5a2699d 100644 --- a/dbc2.lsp +++ b/dbc2.lsp @@ -1,20 +1,19 @@ -(defmacro unless (test :rest body) - `(if (not ,test) (progn ,@body))) +(import "macro") ; For unless (defmacro assert (test) - `(unless ,test - (error "assert: value is false." ',test))) -(defun sum (sequence) + `(unless ,test + (error "assert: value is false." ',test))) +(defun my-sum (sequence) (let ((res 0)) (for ((xs sequence (cdr xs))) - ((null xs) res) - (setq res (+ res (car xs)))))) + ((null xs) res) + (setq res (+ res (car xs)))))) (defun average-of-absolutes (values) (assure values) ;; requires non-null list (assert (> (length values) 0)) - (let ((res (quotient (sum (mapcar #'abs values)) (length values)))) + (let ((res (quotient (my-sum (mapcar #'abs values)) (length values)))) ;; must ensure positive result (assert (>= res 0)) - (assure res))) + (assure res))) ;; (average-of-absolutes '(1 3)) ;; (average-of-absolutes '()) -- cgit 1.4.1-2-gfad0