[plt-scheme] scribble ultra beginner: macros
Eric Tanter wrote:
> Another one:
>
> The following simple/useless macro works, but I cannot include it in a @schemeblock:
>
> #lang scheme
>
> (define-syntax FOO
> (lambda (stx)
> (syntax-case stx ()
> ((FOO val)
> (let ((name (datum->syntax stx 'y)))
> #`(let ((#,name val))
> #,name))))))
>
>> (FOO 10)
> 10
>
> when I try to put it in a schemeblock:
>
> @schemeblock[
> (define-syntax FOO
> (lambda (stx)
> (syntax-case stx ()
> ((FOO val)
> (let ((name (datum->syntax stx 'y)))
> #`(let ((#,name val))
> #,name))))))
> ]
>
> I get an error:
>
> Users/etanter/Develop/Scheme/Scribble/test.scrbl:46:20: compile: unbound identifier in module in: name
>
> === context ===
> /Applications/_Extra/Devel/PLT Scheme v4.2.5/collects/scheme/private/map.ss:18:11: map
> /Applications/_Extra/Devel/PLT Scheme v4.2.5/collects/scribble/run.ss: [running body]
> /Applications/_Extra/Devel/PLT Scheme v4.2.5/collects/scribble/tools/drscheme-buttons.ss:24:3
> /Applications/_Extra/Devel/PLT Scheme v4.2.5/collects/scheme/private/more-scheme.ss:158:2: call-with-break-parameterization
> /Applications/_Extra/Devel/PLT Scheme v4.2.5/collects/scheme/private/more-scheme.ss:274:2: call-with-exception-handler
>
> what am I doing wrong here?
@schemeblock uses #, as an escape, so that you can insert computed text
into code snippets.
Try using @SCHEMEBLOCK instead.
Ryan