Consider the following module: --8<---------------cut here---------------start------------->8--- (define-module (foo) #:export (foo))
(define-syntax-rule (foo bar) (begin (define-syntax-rule (blah x) x) (define (bar val) (blah val)))) --8<---------------cut here---------------end--------------->8--- and the following session with v2.0.7-204-g1ea3762: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use (foo) scheme@(guile-user)> (foo bar) scheme@(guile-user)> (bar 5) ERROR: In procedure #<syntax-transformer blah>: ERROR: Wrong type to apply: #<syntax-transformer blah> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> --8<---------------cut here---------------end--------------->8--- Note that it works when the same 'foo' macro is entered directly at a fresh REPL: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (define-syntax-rule (foo bar) (begin (define-syntax-rule (blah x) x) (define (bar val) (blah val)))) scheme@(guile-user)> (foo bar) scheme@(guile-user)> (bar 5) $1 = 5 scheme@(guile-user)> --8<---------------cut here---------------end--------------->8--- Mark