[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CLOS question (or bug?)
- To: info-mcl@cambridge.apple.com
- Subject: CLOS question (or bug?)
- From: "Danny Brewer" <Danny_Brewer@alinkgateway.farallon.com>
- Date: 5 Nov 91 09:13:26 U
- Priority: Normal
- Return-receipt-to: Danny_Brewer@alinkgateway.farallon.com
Unknown Microsoft mail form. Approximate representation follows.
From: Danny Brewer on Tue, Nov 5, 1991 9:13 AM
Subject: CLOS question (or bug?)
To: info-mcl@cambridge.apple.com
The following CLOS behavior is an inconvenience, if not a bug. First define a
simple class with a "constant" whose value the same for all instances and is
not intended to change. It makes sense to store this slot in the class rather
than the instances.
(DEFCLASS A ()
(
;;-----constants-----
(const1 :READER A-Const1
:INITFORM 123
:ALLOCATION :CLASS)
;;-----variables-----
(var1 :ACCESSOR A-Var1
:INITARG :var1)
(var2 :ACCESSOR A-Var2
:INITARG :var2)
)
)
Now I make two instances and test them.
(SETF instance1-A (MAKE-INSTANCE 'A :var1 "meow" :var2 "mix"))
(SETF instance2-A (MAKE-INSTANCE 'A :var1 "giddy" :var2 "gat"))
Later, during an interactive programming session, I decide that const1
shouldn't be 123 but should be 456. So I re-select and enter the class
definition above, but with the corrected constant.
Now check the previously created instances...
(A-Const1 instance1-A)
(A-Const1 instance2-A)
And they still have their old values. So I figure I must need to
reinstantiate them.
(SETF instance1-A (MAKE-INSTANCE 'A :var1 "meow" :var2 "mix"))
(SETF instance2-A (MAKE-INSTANCE 'A :var1 "giddy" :var2 "gat"))
Now to check...
(A-Const1 instance1-A)
(A-Const1 instance2-A)
And they STILL don't have the value of the new constant. Please correct me
if I'm wrong, I'm new to CLOS, but I would consider this a bug.
By experimenting I've discovered that if I redefine the class WITHOUT the
:ALLOCATION :CLASS and then redefine it with :ALLOCATION :CLASS, the
new "constant" is immediately in effect without having to reinstantiate
the two instances.
But wait, that's not all...
On page 214 of the manual the description of WINDOW-UPDATE-CURSOR says that
"The default version simply sets the cursor to the result of calling the
generic function WINDOW-CURSOR on the window." I think this should say
VIEW-CURSOR instead of WINDOW-CURSOR. On the previous page the description
of VIEW-CURSOR says that it is called by WINDOW-UPDATE-CURSOR.
Page 215 says of SET-CURSOR that a cursor ID can be given, but this doesn't
seem to work for me. For example, using SET-CURSOR with the ID of the
cross cursor from the system file doesn't work.
Why isn't *CROSS-CURSOR* defined along with *WATCH-CURSOR*, *I-BEAM-CURSOR*,
and *ARROW-CURSOR* ?