I'm studying Common Lisp (with Lispworks) and I'm trying to get into class system right now. There is a class called standard-object and it is defined as
The class standard-object is an instance of standard-class and is a superclass of every class that is an instance of standard-class except itself.
(taken from http://www.lispworks.com/documentation/HyperSpec/Body/t_std_ob.htm#standard-object) so it is an instance of standard-class
On the other hand standard-class is a subclass of standard-object
>(subtypep 'standard-class 'standard-object)
=>T, T
How can the standard-object be a superclass for the standard-class and be its instance at the same time? If we define standard-class as a subtype, we should define it after defenition of its supertype (e.g. standard-object), so how can it be, that the superclass becomes the instance? Or my logic is just wrong?