[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Correction
Date: 24 Jul 87 09:38 PDT
From: Gregor.pa@Xerox.COM
From: Scott McKay <SWM@SAPSUCKER.SCRC.Symbolics.COM>
Subject: Correction
Date: 23 Jul 1987 20:38-EDT
From: VERACSD@A.ISI.EDU
(I might add that Symbolics does not allow lexical
bindings around defmethods (not sure about TI); I hope they
will consider it.)
Isn't this what instance variables are for? In CLOS, methods
get to choose what "slots" (CLOSpeak for "instance variable") they
are allowed to access, so can get the "own variable" behavior you
want that way.
No, this kind of use of lexical variables is not at all the same as
slots (instance variables). Slots are a piece of storage which is
associated with an object (in the case of class variables it can be more
than one object). Effectively that means that with respect to the body
of the method slots are dynamic variables. Needless to say, lexical
variables around a defmethod aren't dynamic variables. Here is what I
think of as a prototypical example of methods using both a slot and a
lexical variable.
Thanks for unconfusing me.
(defclass plist-mixin ()
((plist :initform ()
:accessor plist)))
(let ((mark (list "mark")))
(defmethod mark ((x plist-mixin))
(setf (getf (plist x) mark) t))
(defmethod markp ((x plist-mixin))
(getf (plist x) mark))
)