Question: It is my understanding that the memory layout of a Common Lisp object (bitwise tagging is defined by CLOS (classes).

I understand that every class has a corresponding type, but not every type has a corresponding class, because types can be compound (lists). I think that types are like logical constraints, as opposed to classes that are concrete "types" with a tagging scheme.

If this is correct, does the type system serve any other purpose other than being a logical constraint (such as specifying that an integer must be within a certain range, or that an array contains a particular type)?

If this is not correct, what purpose does the type system actually serve in light of CLOS? Thanks.

Answer: 
1. CLOS was added to CL fairly late in the game (and it was not the only object system designed for CL)
2. Even with CLOS, the type system can be used by the compiler for optimizations and by user to reason about their code.
The type system defines different objects that do different things. The CLOS system is more so used for methods that define special behaviors for types in a more logical way for some programmers. Coming from Java, the CLOS System was more logical and systematic for me, so it has a role for some programmers. I like to think of the CLOS system as a class in Java such as the Integer class, and the type system similar to primitives in Java. The CLOS system simply helps you extend your objects with methods in a more systematic way than creating a structure imho.