[prev in list] [next in list] [prev in thread] [next in thread] 

List:       racket-users
Subject:    [plt-scheme] (module) expanded from a macro
From:       jensaxel () soegaard ! net (=?ISO-8859-1?Q?Jens_Axel_S=F8gaard?=)
Date:       2006-10-22 18:07:07
Message-ID: 453BB34B.7030703 () soegaard ! net
[Download RAW message or body]

Dan Muresan skrev:
> Hi, I'm wondering why the following doesn't work:
> 
> (define-syntax xmodule
>    (syntax-rules ()
>      ((_ name (export ...) def ...)
>       (module name mzscheme (provide export ...)
>         def ...))))
> 
>  (xmodule mod (mac) (define-syntax mac (syntax-rules () ((_ x) x))))
> 
> I get:
> 
> compile: bad syntax; function application is not allowed, because no
> #%app syntax transformer is bound in: (syntax-rules () ((_ x) x))
> 
> However, plain definitions work inside xmodule.

Try one of these:

(define-syntax (xmodule stx)
   (syntax-case stx ()
     [(_ name (export ...) def ...)
      (syntax-local-introduce
       #'(module name mzscheme (provide export ...)
           def ...))]))

   (define-syntax (xmodule stx)
     (syntax-case stx ()
       [(_ name (export ...) def ...)
        (datum->syntax-object
         stx (syntax-object->datum
              #'(module name mzscheme (provide export ...)
                  def ...)))]))

-- 
Jens Axel S?gaard



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic