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