From: Sam S. <sd...@gn...> - 2001-04-03 20:10:30
|
> * In message <200...@ti...nuxnet.hom> > * On the subject of "[clisp-list] ANSI compatibility question" > * Sent on Tue, 3 Apr 2001 15:46:38 -0400 > * Honorable "David E. Young" <yo...@nc...> writes: > > (defclass rule () > ((name :initarg :name > :initform nil > :reader get-name))) > > (defmethod initialize-instance :after ((self rule) &key (directives nil)) > ...) > > (defun make-rule (name engine &key (doc-string nil) > (directives nil) (source nil)) > (make-instance 'rule :name name :directives directives)) > > Note the addition of an initialisation argument in > initialize-instance's lambda list. > > With the above, CLISP fails at runtime with: > > *** - EVAL/APPLY: keyword :NAME is illegal for #<COMPILED-CLOSURE #:COMPILED-FORM-129-1>. The possible keywords are (:DIRECTIVES) > 1. Break LISA[5]> CLISP tries to call your `initialize-instance' :after method and fails - it does not take :name args. If you write (defmethod initialize-instance :after ((self rule) &key (directives nil) &allow-other-keys) ...) it should work. -- Sam Steingold (http://www.podval.org/~sds) Support Israel's right to defend herself! <http://www.i-charity.com/go/israel> Read what the Arab leaders say to their people on <http://www.memri.org/> You can have it good, soon or cheap. Pick two... |