Jotter <2026-04-16 Thu>
(bind ((x 3))
(if (>= x 0)
'non-negative
'negative))
(bind ((x 3))
(cond ((> x 0) 'positive)
((< x 0) 'negative)
((= x 0) 'zero)))
(defmacro kond (&rest clauses)
(if (null clauses)
nil
(let ((clause (first clauses))
(rest (rest clauses)))
(if (eq (first clause) 't)
`(progn ,@(rest clause))
`(if ,(first clause)
(progn ,@(rest clause))
(kond ,@rest))))))
(bind ((x 3))
(kond ((> x 0) 'positive)
((< x 0) 'negative)
((= x 0) 'zero)))
(cond)
NIL
(kond)
NIL
(cond (t 'default))
DEFAULT
(kond (t 'default))
DEFAULT
(bind ((x 3))
(kond ((> x 0) 'positive)
((< x 0) 'negative)
((= x 0) 'zero)))
(bind ((x 3))
(kond ((> x 0) 'positive)
((< x 0) 'negative)
((= x 0) 'zero)))
(progn (print 2)
(print 3)
(print 4))
(cond ((= x 3) 4 5 6))
(defun my-length (ns &optional (acc 0))
"Return the length of a list of numbers"
(cond ((null ns) acc)
((consp ns) (my-length (rest ns) (+ 1 acc)))))
(defun my-length (ns &optional (acc 0))
"Return the length of a list of numbers"
(match ns
(nil acc)
(`(,first ,@rest) (my-length (rest ns) (+ 1 acc)))))
Author: Breanndán Ó Nualláin <o@uva.nl>
Date: 2026-05-07 Thu 09:14