Type
****

 -- Function: COERCE (x type)
     Package:LISP

     Coerces X to an object of the type TYPE.

 -- Function: TYPE-OF (x)
     Package:LISP

     Returns the type of X.

 -- Function: CONSTANTP (symbol)
     Package:LISP

     Returns T if the variable named by SYMBOL is a constant; NIL otherwise.

 -- Function: TYPEP (x type)
     Package:LISP

     Returns T if X is of the type TYPE; NIL otherwise.

 -- Function: COMMONP (x)
     Package:LISP

     Returns T if X is a Common Lisp object; NIL otherwise.

 -- Function: SUBTYPEP (type1 type2)
     Package:LISP

     Returns T if TYPE1 is a subtype of TYPE2; NIL otherwise.  If it could not determine, then returns NIL as the second value.  Otherwise, the second value is T.

 -- Macro: CHECK-TYPE
     Package:LISP

     Syntax:

          (check-type place typespec [string])

     Signals an error, if the contents of PLACE are not of the specified type.

 -- Macro: ASSERT
     Package:LISP

     Syntax:

          (assert test-form [({place}*) [string {arg}*]])

     Signals an error if the value of TEST-FORM is NIL.  STRING is an format string used as the error message.  ARGs are arguments to the format string.

 -- Macro: DEFTYPE
     Package:LISP

     Syntax:

          (deftype name lambda-list {decl | doc}* {form}*)

     Defines a new type-specifier abbreviation in terms of an 'expansion' function (lambda lambda-list1 {decl}* {form}*) where lambda-list1 is identical to LAMBDA-LIST except that all optional parameters with no default value specified in LAMBDA-LIST defaults to the symbol '*', but not to NIL.  When the type system of GCL encounters a type specifier (NAME arg1 ... argn), it calls the expansion function with the arguments arg1 ... argn, and uses the returned value instead of the original type specifier.  When the symbol NAME is used as a type specifier, the expansion function is called with no argument.  The doc-string DOC, if supplied, is saved as the TYPE doc of NAME, and is retrieved by (documentation 'NAME 'type).

 -- Declaration: DYNAMIC-EXTENT
     Package:LISP Declaration to allow locals to be cons'd on the C stack. For example (defun foo (&rest l) (declare (:dynamic-extent l)) ...) will cause l to be a list formed on the C stack of the foo function frame. Of course passing L out as a value of foo will cause havoc. (setq x (make-list n)) (setq x (cons a b)) (setq x (list a  b c ..)) also are handled on the stack, for dynamic-extent x.