Le 08/01/2023 à 10:46, yarl baudig a écrit :
What if I replace

(define-syntax define-enumerate-type
   (syntax-rules ()
     ((_ name->int (name id) ...)
      (define-syntax name->int
        (syntax-rules (name ...)
          ((_ name) id) ...)))))

with

(define-syntax define-enumerate-type
   (syntax-rules ()
     ((_ name->int (name id) ...)
      (define-syntax name->int
        (syntax-rules ()
          ((_ name) id) ...)))))

?




Not going to work.

(define-syntax define-enumerate-type
  (syntax-rules ()
    ((_ name->int (name id) ...)
     (define-syntax name->int
       (syntax-rules ()
         ((_ name) id) ...)))))

(define-enumerate-type my-enum
  (member1 1)
  (member2 2))

(my-enum member2)
⇒ 1


The define-enumerate-type invocation expands to

(define-syntax my-enum
  (syntax-rules ()
    ((_ member1) 1)
    ((_ member2) 2)))

and since member1 is not declared as a literal in the first
argument to syntax-rules, it matches anything.

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to