See below.
On Tue, 2003-09-02 at 16:46, Craig Lanning wrote:
> Signaled an error and said that PCL::MATCH-P is unbound.
>
> Craig
>
> On Tue, 2003-09-02 at 16:17, Gerd Moellmann wrote:
> > Craig Lanning <[EMAIL PROTECTED]> writes:
> >
> > > The application runs to completion. :-)
> >
> > That looks promising :). I think is the real fix should then be the
> > patch below. Could you please try this one, too?
> >
> > (in-package :pcl)
> >
> > (defun call-ctor (class initargs)
> > (flet (;;
> > ;; Return two values ARGS, MATCH-P. ARGS is a list of values
> > ;; from INITARGS with which the ctor can be invoked. MATCH-P
> > ;; true means the ctor can be used.
> > (call-args (ctor)
> > (loop for (key value) on initargs by #'cddr
> > for (ctor-key ctor-value) on (ctor-initargs ctor) by #'cddr
> > when (or (not (eq key ctor-key))
> > (and (constantp ctor-value)
> > (not (eql value ctor-value))))
> > return nil
> > unless (constantp ctor-value)
> > collect value into args
> > finally
> > (return (values args match-p)))))
If I change the line above to:
(return (values args t)))))
It works just fine.
Craig
> > ;;
> > ;; Loop over all ctors of CLASS looking for a ctor that can be
> > ;; used to construct an instance with the given initargs. If one
> > ;; is found, invoke it and return its value.
> > (dolist (ctor (plist-value class 'ctors))
> > (when (eq (ctor-state ctor) 'optimized)
> > (multiple-value-bind (args match-p)
> > (call-args ctor)
> > (when match-p
> > (return (apply ctor args))))))))