[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: export in syntax-rules
From: |
Mikael Djurfeldt |
Subject: |
Re: export in syntax-rules |
Date: |
Mon, 27 Jan 2003 12:23:16 +0100 |
User-agent: |
Gnus/5.090008 (Oort Gnus v0.08) Emacs/21.2 (i386-pc-linux-gnu) |
Kevin Ryde <address@hidden> writes:
> In guile 1.6.1 on a recent i386 debian, I thought to use "export"
> inside a syntax-rules in a module definition, for instance
>
> (define-module (abc def)
> #:use-module (ice-9 syncase))
You might want to use #:use-syntax (ice-9 syncase) here instead,
otherwise syntax-case expansion is only invoked when syntax-case
macros are called in an s-expression. That disables singleton macros
and can cause unexpected errors with regard to scope.
> (define-syntax foo
> (syntax-rules ()
> ((foo name)
> (export name))))
>
> (define x 123)
> (foo x)
>
> But I got an error,
>
> ERROR: In procedure variable-ref:
> ERROR: Wrong type argument in position 1 (expecting variable): #f
>
> Is this sort of thing meant to work, or have I made some basic error?
>
> (I was looking to make "-public" versions of some macros. I got the
> effect I wanted with a procedure->macro, but just wondered if the
> syntax-rules style was valid.)
This is caused by a bug in syncase.scm. I've fixed this in CVS 1.7.0
and in the 1.6 branch. 1.6.2 will contain the fix.
2003-01-27 Mikael Djurfeldt <address@hidden>
* syncase.scm (guile-macro): Strip syntactic information from
expression before trying to treat it as a Guile macro call.
(Thanks to Kevin Ryde.)