[Openmcl-devel] OpenMCL 1.0, compilation units and macroexpansion bug?

Vyacheslav Akhmechet coffeemug at gmail.com
Sat Nov 10 16:08:53 PST 2007


My apologies, adding &environment and passing the value to
macroexpand-1 explicitly *does* make a difference. Does that mean that
all other implementations support behavior that isn't required by the
spec?

On 11/10/07, Vyacheslav Akhmechet <coffeemug at gmail.com> wrote:
> Hello,
>
> I'm running OpenMCL 1.0 on PPC. I'm having trouble with the following
> test snippet:
>
> (defmacro foo (a)
>   `(+ ,a ,a))
>
> (defmacro bar ()
>   `(print ',(macroexpand-1 '(foo 5))))
>
> (defun baz ()
>   (bar))
>
> When run from the REPL, calling (baz) returns (+ 5 5), as expected.
> However, when the definitions are placed into a file OpenMCL returns
> (foo 5), while all other implementations I've tested on return (+ 5
> 5). It seems that OpenMCL doesn't add the macro FOO to the null
> environment when MACROEXPAND-1 is called manually. I tried passing
> &environment explicitly, but got the same result.
>
> The spec for DEFMACRO says: "If a defmacro form appears as a top level
> form, the compiler must store the macro definition at compile time, so
> that occurrences of the macro later on in the file can be expanded
> correctly." Is this a bug or am I misunderstanding the spec?
>
> Regards,
> Slava Akhmechet
>



More information about the Openmcl-devel mailing list