(define-syntax enum (ir-macro-transformer (lambda (form inject compare?) `(define-values (,(inject (cadr form)) ,@(map (lambda (x) (symbol-append (inject (cadr form)) '- (inject x))) (cddr form))) (values ,@(map (lambda (x) `',x) (inject (cdr form)))))))) (enum my foo bar) (pretty-print `(,my ,my-foo ,my-bar))