Common Lisp the Language, 2nd Edition
Next: Type Specifiers That
Up: Type Specifiers
Previous: Type Specifier
Lists
A type specifier list
(satisfies
predicate-name
)
denotes the set of all objects that satisfy the predicate named by
predicate-name, which must be a symbol whose global function
definition is a one-argument predicate. (A name is required;
lambda-expressions are disallowed in order to avoid scoping problems.)
For example, the type (satisfies numberp)
is the same as
the type number
. The call
(typep x '(satisfies p))
results in applying p
to x
and returning t
if the result is true and
nil
if the result is false.
As an example, the type string-char
could be defined as
(deftype string-char ()
'(and character (satisfies string-char-p)))
See deftype
.
X3J13 voted in March 1989 (COMMON-TYPE) to remove the type
string-char
and the function string-char-p
from the language.
It is not a good idea for a predicate appearing in a
satisfies
type specifier to cause any side effects when
invoked.
AI.Repository@cs.cmu.edu