But, by definition, loading the file is exactly as if you had entered and
interpreted the source again. Because entering and interpreting the code again
is what load does, by definition.
If you want to define an a which is not affected by a subsequent defintion,
use defvar:
(defvar a "meh") ;; if a is already defined, nothing happens
this differs from defparameter:
(defparameter a "meh") ;; if a is already defined, assign "meh" to it
See, some hackers had the same problem decades before you and already
solved it.
Constants are not the appropriate tool for this, however, and do not support
this usage. If there is the possibility that a constant a already exists, but
its value is not "meh", then a is not really behaving as a constant! A
constant has the same definition everywhere.
If you suspect that some quantity may change when pieces of the program
are recompiled and reloaded, you cannot make it a constant.
constants are allowed to be inlined into compiled code, so that if you redefine
a constant, existing parts of the program (compiled, optimized code) will
continue to use the old value.