"Return T iff OBJECT is of type TYPE."
(%typep object type))
-;;; If Type is a type that we can do a compile-time test on, then return the
-;;; whether the object is of that type as the first value and second value
-;;; true. Otherwise return NIL, NIL.
+;;; If TYPE is a type that we can do a compile-time test on, then
+;;; return whether the object is of that type as the first value and
+;;; second value true. Otherwise return NIL, NIL.
;;;
-;;; We give up on unknown types and pick off FUNCTION and UNION types. For
-;;; structure types, we require that the type be defined in both the current
-;;; and compiler environments, and that the INCLUDES be the same.
+;;; We give up on unknown types and pick off FUNCTION and UNION types.
+;;; For structure types, we require that the type be defined in both
+;;; the current and compiler environments, and that the INCLUDES be
+;;; the same.
(defun ctypep (obj type)
(declare (type ctype type))
(etypecase type
named-type
member-type
array-type
- sb!xc:built-in-class)
+ sb!xc:built-in-class
+ cons-type)
(values (%typep obj type) t))
(sb!xc:class
(if (if (csubtypep type (specifier-type 'funcallable-instance))
\f
;;;; miscellaneous interfaces
-;;; Clear memoization of all type system operations that can be altered by
-;;; type definition/redefinition.
+;;; Clear memoization of all type system operations that can be
+;;; altered by type definition/redefinition.
(defun clear-type-caches ()
(when *type-system-initialized*
(dolist (sym '(values-specifier-type-cache-clear
(funcall (symbol-function sym))))
(values))
-;;; Like TYPE-OF, only we return a CTYPE structure instead of a type specifier,
-;;; and we try to return the type most useful for type checking, rather than
-;;; trying to come up with the one that the user might find most informative.
+;;; Like TYPE-OF, only we return a CTYPE structure instead of a type
+;;; specifier, and we try to return the type most useful for type
+;;; checking, rather than trying to come up with the one that the user
+;;; might find most informative.
(declaim (ftype (function (t) ctype) ctype-of))
(defun-cached (ctype-of
:hash-function (lambda (x) (logand (sxhash x) #x1FF))
:complexp (not (typep x 'simple-array))
:element-type etype
:specialized-element-type etype)))
+ (cons
+ (make-cons-type *universal-type* *universal-type*))
(t
(sb!xc:class-of x))))