guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: define-module, #:export and export


From: Jean Abou Samra
Subject: Re: define-module, #:export and export
Date: Sun, 8 Jan 2023 14:19:08 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0

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

[Prev in Thread] Current Thread [Next in Thread]