Below, the two modules `test1` and `test2` use the same expander `exp` and otherwise differ only in the presence of the string "foo" as the second datum in `test2`.
The syntax objects passed to #%module-begin are more different than that, however: the syntax passed to the first is #'(#%module-begin 'mac-result) wheras the second gets: #'(#%module-begin (mac 42) "foo") Thus my question: why is `mac` getting expanded at different times based on the presence of "foo"? ;;; #lang racket (module exp racket (provide #%datum mac (rename-out [mb #%module-begin])) (define-syntax-rule (mac x) 'mac-result) (define-syntax (mb stx) (println (syntax->datum stx)) (syntax-case stx () [(_ . EXPRS) #'(#%module-begin . EXPRS)])) ) (module test1 (submod ".." exp) (mac 42)) (require 'test1) ;; '(#%module-begin 'mac-result) (module test2 (submod ".." exp) (mac 42) "foo") (require 'test2) ;; '(#%module-begin (mac 42) "foo") -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/C0F76736-B28C-4F64-A1AA-D2B2EFD34BF8%40mbtype.com.