Here's a better definition:
(let olddef def (mac def (name args . body) (if (acons name) `(def= ,(cadr name) ,args ,@body) (apply (rep olddef) (cons name (cons args body))))))
-----
Anyway, nice work, but damn do we need 1st-class macros.