Re: MOP/Macroexpansion



"Andreas Thiele" <nospam@xxxxxxxxxx> wrote in message
news:d7cb1h$8f9$04$1@xxxxxxxxxxxxxxxxxxxx
> Hi,
>
> the following code snippet works in my application if def-class is used at
> top-level:
>
> (defmacro def-methods (name)
> `(progn ,@(class-methods name)))
>
> (defmacro def-class (name parents &body body)
> `(progn
> (defclass ,name ,(if parents parents '(db-root))
> ,@(transform-source name body)
> (:metaclass db-class))
> (def-methods ,name)))
>
> class-methods computes a list of defmethod forms and needs to call
> find-class on the created class. Thus defclass needs to be executed before
> def-methods is expanded. This does not work, if I use def-class within a

Make def-methods a function instead, thus it will run after the execution of
the defclass form.

--
Coby Beck
(remove #\Space "coby 101 @ bigpond . com")


.