Analogous to your defvar is the case of class allocated instance
variables on redefinition of the class which changes the variable initform.
(defclass foo () ((bar :initform 20 :allocation :class)))
(slot-value (make-instance 'foo) 'bar)
20
(defclass foo () ((bar :initform 10 :allocation :class)))
(slot-value (make-instance 'foo) 'bar)
20
This is in MCL 2.0. I'm not sure if the behaviour is correct, but
I patch the environment so that evaluation of such forms *does* make
the change. (by setting the instance variable in the class prototype)
-alan
From: ······@cs.utexas.edu (Micheal S. Hewett)
Newsgroups: comp.lang.lisp
Date: 8 May 1994 13:09:58 -0500
Organization: CS Dept, University of Texas at Austin
Here are some problems I've seen over the years that keep recurring:
1) defvar doesn't redefine
Editing a file to change the value of a DEFVAR'ed variable
and then reloading the file DOES NOT change the value of
the variable in memory. This one causes effects that are
very puzzling to novice programmers.