This shows you the differences between two versions of the page.
— |
cl:types:satisfies [2017/05/01 21:00] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Type Specifier SATISFIES ====== | ||
+ | |||
+ | ====Compound Type Specifier Kind==== | ||
+ | Predicating. | ||
+ | |||
+ | ====Compound Type Specifier Syntax==== | ||
+ | **satisfies** //predicate-name// | ||
+ | |||
+ | ====Compound Type Specifier Arguments==== | ||
+ | //predicate-name// - a //[[CL:Glossary:symbol]]//. | ||
+ | |||
+ | ====Compound Type Specifier Description==== | ||
+ | This denotes the set of all //[[CL:Glossary:object|objects]]// that satisfy the //[[CL:Glossary:predicate]]// //predicate-name//, which must be a //[[CL:Glossary:symbol]]// whose global //[[CL:Glossary:function]]// definition is a one-argument predicate. A name is required for //predicate-name//; //[[CL:Glossary:lambda expressions]]// are not allowed. For example, the //[[CL:Glossary:type specifier]]// ''([[CL:Types:and]] [[CL:Types:integer]] (satisfies [[CL:Functions:evenp]]))'' denotes the set of all even integers. The form ''([[CL:Functions:typep]] //x// '(satisfies //p//))'' is equivalent to ''([[CL:Special Operators:if]] (//p// //x//) [[CL:Constant Variables:t]] [[CL:Constant Variables:nil]])''. | ||
+ | |||
+ | The argument is required. The //[[CL:Glossary:symbol]]// **[[CL:Types:wildcard|*]]** can be the argument, but it denotes itself (the //[[CL:Glossary:symbol]]// **[[CL:Types:wildcard|*]]**), and does not represent an unspecified value. | ||
+ | |||
+ | The symbol **satisfies** is not valid as a //[[CL:Glossary:type specifier]]//. | ||
+ | |||
+ | \issue{TYPE-SPECIFIER-ABBREVIATION:X3J13-JUN90-GUESS} | ||