User Tools


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

Link to this comparison view

cl:types:or [2017/05/01 21:00] (current)
Line 1: Line 1:
 +====== Type Specifier OR ======
 +====Compound Type Specifier Kind====
 +====Compound Type Specifier Syntax====
 +**or** //​typespec//''​*''​
 +====Compound Type Specifier Arguments====
 +//​typespec//​ - a //​[[CL:​Glossary:​type specifier]]//​.
 +====Compound Type Specifier Description====
 +This denotes the set of all //​[[CL:​Glossary:​object|objects]]//​ of the //​[[CL:​Glossary:​type]]//​ determined by the union of the //​typespecs//​. For example, the type **[[CL:​Types:​list]]** by definition is the same as ''​([[CL:​Types:​or]] [[CL:​Types:​null]] [[CL:​Types:​cons]])''​. Also, the value returned by **[[CL:​Functions:​position]]** is an //​[[CL:​Glossary:​object]]//​ of //​[[CL:​Glossary:​type]]//​ ''​([[CL:​Types:​or]] [[CL:​Types:​null]] ([[CL:​Types:​integer]] 0 *))'';​ i.e. either **[[CL:​Constant Variables:​nil]]** or a non-negative //​[[CL:​Glossary:​integer]]//​.
 +**[[CL:​Types:​wildcard|*]]** is not permitted as an argument.
 +The //​[[CL:​Glossary:​type specifiers]]//​ ''​(or)''​ and **[[CL:​Constant Variables:​nil]]** are equivalent. The symbol **[[CL:​Types:​or]]** is not valid as a //​[[CL:​Glossary:​type specifier]]//;​ and, specifically,​ it is not an abbreviation for ''​(or)''​.