ToC | DocOverview | CGDoc | RelNotes | Index | PermutedIndex
| Allegro CL

| ANSI Common Lisp 4 Types and Classes 4.4 Dictionary of Types and Classes
4.4.28 typep | Function
  Syntax: typep object type-specifier `&optional` environment generalized-boolean Arguments and Values: object - an object. type-specifier - any type specifier except values, or a type specifier list whose first element is either function or values. environment - an environment object. The default is nil, denoting the null lexical environment and the and current global environment. generalized-boolean - a generalized boolean. Description: Returns true if object is of the type specified by type-specifier; otherwise, returns false. A type-specifier of the form `(satisfies fn)` is handled by applying the function `fn` to object. `(typep object '(array type-specifier))`, where type-specifier is not `*`, returns true if and only if object is an array that could be the result of supplying type-specifier as the `:element-type` argument to make-array. `(array *)` refers to all arrays regardless of element type, while `(array type-specifier)` refers only to those arrays that can result from giving type-specifier as the `:element-type` argument to make-array. A similar interpretation applies to `(simple-array type-specifier)` and `(vector type-specifier)`. See Section 15.1.2.1 Array Upgrading. `(typep object '(complex type-specifier))` returns true for all complex numbers that can result from giving numbers of type type-specifier to the function complex, plus all other complex numbers of the same specialized representation. Both the real and the imaginary parts of any such complex number must satisfy:
       (typep realpart 'type-specifier)

       (typep imagpart 'type-specifier)
  See the function upgraded-complex-part-type. Examples:
       (typep 12 'integer)  true
       (typep (1+ most-positive-fixnum) 'fixnum)  false
       (typep nil t)  true
       (typep nil nil)  false
       (typep 1 '(mod 2))  true
       (typep #c(1 1) '(complex (eql 1)))  true
      ;; To understand this next example, you might need to refer to
      ;; Section 12.1.5.3 Rule of Canonical Representation for Complex Rationals.
       (typep #c(0 0) '(complex (eql 0)))  false
  Let `Ax` and `Ay` be two type specifiers that denote different types, but for which
       (upgraded-array-element-type 'Ax)
  and
       (upgraded-array-element-type 'Ay)
  denote the same type. Notice that
       (typep (make-array 0 :element-type 'Ax) '(array Ax))  true
       (typep (make-array 0 :element-type 'Ay) '(array Ay))  true
       (typep (make-array 0 :element-type 'Ax) '(array Ay))  true
       (typep (make-array 0 :element-type 'Ay) '(array Ax))  true
  Exceptional Situations: An error of type error is signaled if type-specifier is `values`, or a type specifier list whose first element is either function or values. The consequences are undefined if the type-specifier is not a type specifier. See Also: type-of, upgraded-array-element-type, upgraded-complex-part-type, Section 4.2.3 Type Specifiers Notes: Implementations are encouraged to recognize and optimize the case of `(typep x (the class y))`, since it does not involve any need for expansion of deftype information at runtime.

Allegro CL Implementation Details: None.

© Franz Inc. All Rights Reserved - File last updated 2022-07-25