Raymond Toy <[EMAIL PROTECTED]> writes:
> >>>>> "Axel" == Axel Schairer <[EMAIL PROTECTED]> writes:
>
> Axel> As a work-around, I have temporarily disabled MAKE-INSTANCE in my
> Axel> .cmucl-init.
>
> How do you create instances then?
Err, heh, good question. I meant, I disabled the _compiler macro_ for
MAKE-INSTANCE. My ~/cmucl-init now contains:
(without-package-locks
(define-compiler-macro pcl::make-instance (&whole form &rest args)
(declare (ignore args))
;;(or (make-instance->constructor-call form)
form))
> I don't know the cause, though.
I looked at the code for the compiler macro (i.e. for
MAKE-INSTANCE->CONSTRUCTOR-CALL), and it collects (EVAL KEY) into INITARGS,
which in turn is then put into the LOAD-TIME-VALUE form for the ctor. The
problem seems to be that the arguments are again evaluated at run-time. I
didn't get any further because I didn't understand the code concerned with
funcallable instances.
If I find the time, I might have another look later.
Cheers,
Axel