The way that data values are represented in Lisp is fundamentally different to more "conventional" languages such as C or Pascal: in Lisp each piece of data (a Lisp Object) has two basic attributes, the actual data and a tag value defining the type of the object. This means that type checking is performed on the actual data itself, not on the "variable" holding the data.
All Lisp objects are a member of one of the primitive types; these are types built into the Lisp system and can represent things like strings, integers, cons cells, vectors, etc...
More complex types of object can be constructed from these primitive types,
for example a vector of three elements could be regarded as a type
triple if necessary. In general, each separate type provides a
predicate function which returns t when applied to an object of its
type.
Go to the first, previous, next, last section, table of contents.