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))))))))


Reply via email to