(define-syntax define-method (ir-macro-transformer (lambda (expr inject compare) (assert (pair? expr)) (let* ((proc (car expr)) (defn (cdr expr)) (_ (assert (list? defn))) (_ (assert (= 5 (length defn)))) (name (first defn)) (args (second defn)) (writer (third defn)) (reader (fourth defn)) (uri (fifth defn)) ) (list 'quote `(define (,name ,@args ,proc) ))))))