1 2 3 4 5 6 7 8 9 10
(defmacro for (start pred inc . body) `(let (,start) (while ,pred ,@body ,inc))) (assert (= 10 (let ((sum 0)) (for (i 0) (< i 5) (incq i) (setq sum (+ sum i))) sum)))