> > Not going to work. > , it matches anything. > > Obviously...
Ok, I tried more. Apparently, (define-syntax define-enumerate-type (syntax-rules () ((_ name->int (name id) ...) (define-syntax name->int (syntax-rules (name ...) ((_ name) id) ...))))) works the same as (define-syntax define-enumerate-type (syntax-rules () ((_ name->int (name id) ...) (define-syntax name->int (lambda (x) (syntax-case x () ((_ n) (free-identifier=? #'name #'n) #'id) ...)))))) . Now what about (define-syntax define-enumerate-type (syntax-rules () ((_ name->int (name id) ...) (define-syntax name->int (lambda (x) (syntax-case x () ((_ n) (equal? (syntax->datum #'name) (syntax->datum #'n)) #'id) ...)))))) ?