[pro] macros expanding to defclass + some mop code
Sam Steingold
sds at gnu.org
Mon Dec 27 03:37:17 UTC 2010
Hi,
I want to write a macro which would expand to a defclass + some code
which uses the resulting class object using mop.
e.g. (untested),
(defmacro deffoo (class slots)
`(progn
(defclass ,class () ,slots)
(defun foo (x)
(list
,@(mapcar (lambda (ds)
`(,(car (slot-definition-readers ds)) x))
(class-direct-slots (find-class class)))))))
which should expand
(deffoo bar ((a :reader bar-a) (b :reader bar-b)))
to something like this:
(progn
(defclass bar () ((a :reader bar-a) (b :reader bar-b)))
(defun foo (x) (list (bar-a x) (bar-b x))))
Alas, CLASS is not defined at read time when
(class-direct-slots (find-class class))
and
(slot-definition-readers ds)
want to be evaluated.
So, how do I do this?
--
Sam Steingold (http://sds.podval.org/) on Ubuntu 10.04 (lucid)
http://www.memritv.org http://www.PetitionOnline.com/tap12009/
http://ffii.org http://pmw.org.il http://palestinefacts.org
Perl: all stupidities of UNIX in one.
More information about the pro
mailing list