type-of object ⇒ typespec
object—an object.
typespec—a type specifier.
Returns a type specifier, typespec, for a type that has the object as an element. The typespec satisfies the following:
(subtypep (type-of object) (class-of object)) ⇒ true, true
and for conditions,
type-of returns the proper name of the class returned
by class-of if it has a proper name,
and otherwise returns the class itself.
In particular, for objects created by the constructor function
of a structure defined with defstruct without a :type option,
type-of returns the structure name; and for objects created
by make-condition, the typespec is the name of the
condition type.
(type-of 'a) ⇒ SYMBOL
(type-of '(1 . 2))
⇒ CONS
OR⇒ (CONS FIXNUM FIXNUM)
(type-of #c(0 1))
⇒ COMPLEX
OR⇒ (COMPLEX INTEGER)
(defstruct temp-struct x y z) ⇒ TEMP-STRUCT
(type-of (make-temp-struct)) ⇒ TEMP-STRUCT
(type-of "abc")
⇒ STRING
OR⇒ (STRING 3)
(subtypep (type-of "abc") 'string) ⇒ true, true
(type-of (expt 2 40))
⇒ BIGNUM
OR⇒ INTEGER
OR⇒ (INTEGER 1099511627776 1099511627776)
OR⇒ SYSTEM::TWO-WORD-BIGNUM
OR⇒ FIXNUM
(subtypep (type-of 112312) 'integer) ⇒ true, true
(defvar *foo* (make-array 5 :element-type t)) ⇒ *FOO*
(class-name (class-of *foo*)) ⇒ VECTOR
(type-of *foo*)
⇒ VECTOR
OR⇒ (VECTOR T 5)
array-element-type , class-of , defstruct , typecase , typep , Types
Implementors are encouraged to arrange for type-of to return
a portable value.