User Tools


This shows you the differences between two versions of the page.

Link to this comparison view

cl:types:satisfies [2017/05/01 21:00] (current)
Line 1: Line 1:
 +====== Type Specifier SATISFIES ======
 +====Compound Type Specifier Kind====
 +====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]]//​.