In our last article, we talked about slots in classes. I mentioned there that slot-boundp could not tell you whether a particular named slot was present in a class, it raises an error if you ask that function to act on a non-existent slot name.
So, how do you find out whether a particular object has a slot of a given name? That’s where slot-exists-p comes in. It returns non-nil if the named slot exists in the instance, either directly or through inheritance.
Why would a programmer want to do this? When does the programmer not know the names of the slots in a particular class, and should he or she really be messing with a class about which they know so very little? Well, if the coding specification for a project is sufficiently detailed, one might, for instance, say that programmer-defined classes are permitted, but not required, to define a slot called “time-last-modified”, and if that slot is defined, the code takes action to keep that slot updated. I’ve seen it used in similar contexts, but rarely.