(mac fwiths (defs . body) `(with ,(intersperse-nils (keep-odd-pos defs)) ,@(make-setters defs) ,@body)) (def keep-odd-pos (lst) (if lst (cons (car lst) (keep-odd-pos (cddr lst))))) (def intersperse-nils (lst) (if lst (cons (car lst) (cons nil (intersperse-nils (cdr lst)))))) (def make-setters (lst) (if lst (cons (list '= (car lst) (cadr lst)) (make-setters (cddr lst)))))