diff options
author | Darren Bane <darren.bane@emdalo.com> | 2020-08-21 19:40:30 +0100 |
---|---|---|
committer | Darren Bane <darren.bane@emdalo.com> | 2020-08-21 19:40:30 +0100 |
commit | e6931993d7193b60881d0303110974b6af6af852 (patch) | |
tree | c6ace92a2e93aa13f3b44d32439d93fd29bfaacb /cdbc.lisp | |
parent | 5c4dfb5d3e84be9f7e4b9ea8383fcb9de70862aa (diff) | |
download | lsp-e6931993d7193b60881d0303110974b6af6af852.tar.gz |
Some more ISLisp->CL examples
Diffstat (limited to 'cdbc.lisp')
-rw-r--r-- | cdbc.lisp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cdbc.lisp b/cdbc.lisp new file mode 100644 index 0000000..9d790ab --- /dev/null +++ b/cdbc.lisp @@ -0,0 +1,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 '()) |