(define-record-type foo (make-foo x y) foo? (x foo-x) (y foo-y)) (define-syntax test (ir-macro-transformer (lambda (exp inject compare) (let ((get-x (inject (symbol-append (strip-syntax 'foo) '- (strip-syntax 'x)))) (get-y (inject (symbol-append (strip-syntax 'foo) '- (strip-syntax 'y)))) (body (cdr exp))) `(list (,get-x ,@body) (,get-y ,@body)))))) #;295> (test (begin (print "make") (make-foo 1 2))) make make (1 2)