[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Need help defining desfstruct within non-top-level macro call

I am trying to write a macro that is called from within a function
definition, but that includes the definition of a defstruct as a side
effect of its expansion.

First try is:
(defmacro foo (struct-def) &body body
		(defstruct foo-struct ,@struct-def)

However, the macro is used within a defun:

(defun bar (parm)
	(mumble ...)
	(foo (a b c)
	     (something interesting)))
which  expands into

(defun bar (parm)
	(mumble ...)
	    (defstruct foo-struct a b c)
	    (something interesting)))

Now I really want the defstruct to be outside the defun.

What I want to do is evaluate the defstruct part at compile and load
time, not execution. But eval-when is only allowed at the top level. How
do I move the defstruct to the appropriate place?