> 
> 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) ...))))))

?




Reply via email to