minor changes
[clqr.git] / clqr-system-types-and-classes.tex
blobc70a6f93afcc78cb92b26dc51e4b83b3fd12e2dc
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 \section{System Types and Classes}
3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \begin{figure}
6 \begin{center}
7 \boxGOO{%
8 \T\index{T}%
9 \boxGOO{%
10 \kwd*{NUMBER}
11 \boxGOO{%
12 \kwd*{COMPLEX } \Op{\VAR{type\footnotemark[3]}} \\
13 \kwd*{REAL } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
14 \boxGOO{%
15 \kwd*{RATIONAL } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
16 \boxGOO{%
17 \kwd*{INTEGER } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
18 \boxGOO{%
19 \kwd*{FIXNUM} \\
20 \kwd*{BIGNUM} \\
21 \kwd*{SIGNED-BYTE } \Op{\VAR{size\footnotemark[3]}}\\
22 \boxGOO{\kwd*{UNSIGNED-BYTE } \Op{\VAR{size\footnotemark[3]}}
23 \boxGOO{\kwd*{BIT} }}}\\
24 \kwd*{RATIO}}\boxGOOcr
25 \kwd*{FLOAT } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
26 \boxGOO{%
27 \kwd*{SHORT-FLOAT } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
28 \kwd*{SINGLE-FLOAT } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
29 \kwd*{DOUBLE-FLOAT } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}\\
30 \kwd*{LONG-FLOAT } \OP{\VAR{lower-limit\footnotemark[3] }\Op{\VAR{upper-limit\footnotemark[3]}}}}}}\boxGOOcr
31 \kwd*{SEQUENCE}
32 \boxGOO{%
33 \kwd*{LIST}
34 \boxGOO{%
35 \kwd*{CONS } \OP{\VAR{car-type\footnotemark[3] }\Op{\VAR{cdr-type\footnotemark[3]}}}\\
36 \kwd*{SYMBOL}\footnotemark[2]
37 \boxGOO{
38 \kwd*{NULL}}}\boxGOOcr
39 \kwd*{ARRAY}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{dimension\footnotemark[3]}}}\\
40 \boxGOO{%
41 \kwd*{SIMPLE-ARRAY}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{dimension\footnotemark[3]}}}\\
42 \boxGOO{%
43 \kwd*{VECTOR}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{size\footnotemark[3]}}}\\
44 \boxGOO{%
45 \kwd*{SIMPLE-VECTOR } \Op{\VAR{size\footnotemark[3]}}\\
46 \kwd*{BIT-VECTOR}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}\\
47 \boxGOO{%
48 \kwd*{SIMPLE-BIT-VECTOR } \Op{\VAR{size\footnotemark[3]}}}\boxGOOcr
49 \kwd*{STRING}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}\\
50 \boxGOO{%
51 \kwd*{SIMPLE-STRING } \Op{\VAR{size\footnotemark[3]}}\\
52 \boxGOO{%
53 \kwd*{BASE-STRING}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}\\
54 \boxGOO{%
55 \kwd*{SIMPLE-BASE-STRING } \Op{\VAR{size\footnotemark[3]}}}}}}}\boxGOOcr
56 \kwd*{VECTOR}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{size\footnotemark[3]}}}\\
57 \boxGOO{%
58 \kwd*{BIT-VECTOR}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}\\
59 \kwd*{STRING}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}
60 \boxGOO{%
61 \kwd*{BASE-STRING}\footnotemark[2] \Op{\VAR{size\footnotemark[3]}}}}}}\boxGOOcr
62 \kwd*{CHARACTER}
63 \boxGOO{%
64 \kwd*{BASE-CHAR}
65 \boxGOO{%
66 \kwd*{STANDARD-CHAR}}\\
67 \kwd*{EXTENDED-CHAR}}\boxGOOcr
68 \kwd*{STREAM}
69 \boxGOO{%
70 \kwd*{FILE-STREAM},\>
71 \kwd*{TWO-WAY-STREAM},\>
72 \kwd*{SYNONYM-STREAM},\\
73 \kwd*{STRING-STREAM},\>
74 \kwd*{BROADCAST-STREAM},\>
75 \kwd*{ECHO-STREAM}\\
76 \kwd*{CONCATENATED-STREAM}}\boxGOOcr
77 \kwd*{PATHNAME}
78 \boxGOO{%
79 \kwd*{LOGICAL-PATHNAME}}\boxGOOcr
80 \kwd*{SYMBOL}\footnotemark[2]
81 \boxGOO{%
82 \kwd*{KEYWORD}\\
83 \kwd*{BOOLEAN} }\boxGOOcr
84 \kwd*{FUNCTION } \OP{\VAR{arg-types }\Op{\VAR{value-types}}}\\
85 \boxGOO{%
86 \kwd*{GENERIC-FUNCTION}
87 \boxGOO{\kwd*{STANDARD-GENERIC-FUNCTION}}\\
88 \kwd*{COMPILED-FUNCTION}}\boxGOOcr
89 \kwd*{STANDARD-OBJECT}
90 \boxGOO{%
91 \kwd*{CLASS}
92 \boxGOO{%
93 \kwd*{STANDARD-CLASS},\>
94 \kwd*{BUILT-IN-CLASS},\\
95 \kwd*{STRUCTURE-CLASS}}\\
96 \kwd*{STANDARD-METHOD}}\boxGOOcr
97 \kwd*{ARRAY}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{dimension\footnotemark[3]}}}\\
98 \boxGOO{%
99 \kwd*{SIMPLE-ARRAY}\footnotemark[2] \OP{\VAR{type\footnotemark[3] }\Op{\VAR{dimension\footnotemark[3]}}}}\boxGOOcr
100 \kwd*{ATOM},\>
101 \kwd*{HASH-TABLE},\>
102 \kwd*{STRUCTURE-OBJECT},\>
103 \kwd*{PACKAGE},\>
104 \kwd*{READTABLE},\\
105 \kwd*{RANDOM-STATE},\>
106 \kwd*{RESTART},\>
107 \kwd*{METHOD},\>
108 \kwd*{METHOD-COMBINATION}}}
109 \end{center}\vspace{-1em}
110 {\footnotesize\footnotemark[2]Multiply defined.}\\
111 {\footnotesize\footnotemark[3]Defaults to \kwd{*} meaning no restriction.}
113 \caption{Data Types.}%
114 \end{figure}
117 \begin{LIST}{1cm}
119 \IT{(\FU*{TYPEP} \VAR{foo} \VAR{type} \Op{\VAR{environment}})}
121 Return \retval{\T} if \VAR{foo} is of \VAR{type}.
124 \IT{(\FU*{SUBTYPEP} \VAR{type-a} \VAR{type-b}
125 \Op{\VAR{environment}})}
127 Return \retval{\T} if \VAR{type-a} is a recognizable subtype of
128 \VAR{type-b}, and \retvalii{\NIL} if the relationship could not be
129 determined.
132 \IT{(\SF*{THE} \VAR{type} {form})}
134 Return \retval{values} of \VAR{form} which are declared to be of
135 \VAR{type}.
138 \IT{(\FU*{COERCE} \VAR{object} \VAR{type})}
140 Coerce \VAR{object} into \VAR{type}.
143 \IT{(\SF*{TYPECASE} \VAR{foo} \OPn{(\VAR{type} \OPn{\VAR{form-a}})}
144 \OP{(\xorGOO{\kwd*{OTHERWISE}\\\T}{\}}\OPn{\VAR{form-b}})\DF{\NIL}})}
146 Return \retval{values of a \VAR{form-a}} if \VAR{foo} is of this
147 \VAR{type}. Return \retval{values of \VAR{form-b}} otherwise.
150 \IT{(\xorGOO{\SF*{CTYPECASE}\\
151 \SF*{ETYPECASE}
152 }{\}}\VAR{foo} \OPn{(\VAR{type} \OPn{\VAR{form}})})}
154 Return \retval{value of a \VAR{form}} if \VAR{foo} is of this \VAR{type}.
155 Signal correctable/non-correctable error, respectively.
158 \IT{(\FU*{TYPE-OF} \VAR{foo})}
160 \retval{Type of \VAR{foo}}.
163 \IT{(\kwd*{CHECK-TYPE} \VAR{place} \VAR{type} \Op{\VAR{string}})}
165 Return \retval{\NIL} and signal correctable error if \VAR{place} is
166 not of {type}.
169 \IT{(\FU*{STREAM-ELEMENT-TYPE} \VAR{stream})}
171 Return \retval{type} of \VAR{stream} objects.
174 \IT{(\FU*{ARRAY-ELEMENT-TYPE} \VAR{array})}
176 Element \retval{type} \VAR{array} holds.
179 \IT{(\FU*{UPGRADED-ARRAY-ELEMENT-TYPE} \VAR{type}
180 \Op{\VAR{environment}})}
182 \retval{Element type} of most specialized array capable of holding
183 elements of \VAR{type}.
186 \IT{(\SF*{DEFTYPE} \VAR{name} \OPn{\VAR{arg}}
187 \OPn{(\kwd{declare} \OPn{\VAR{decl}})} \Op{\VAR{documentation}}
188 \OPn{\VAR{form}})}
190 Define new type \retval{\VAR{name}}.
193 \IT{\arrGOO{(\kwd{EQL} \VAR{foo})\\
194 (\kwd{MEMBER} \OPn{\VAR{foo}})}{.}}
196 Type specifier, comprising just \VAR{foo} of \VAR{foo}s, respectively.
199 \IT{(\kwd*{SATISFIES} \VAR{name})}
201 Type specifier for all objects satisfying predicate \VAR{name}.
204 \IT{(\kwd*{MOD} \VAR{n})}
206 Type specifier for all integers $<n$.
209 \IT{(\kwd{NOT} \VAR{type})}
211 Complement of type.
214 \IT{(\kwd*{AND} \OPn{\VAR{type}}\DF{\T})}
216 Type specifier for intersection of \VAR{type}s.
219 \IT{(\kwd*{OR} \OPn{\VAR{type}}\DF{\NIL})}
221 Type specifier for union of \VAR{type}s.
224 \IT{(\kwd*{VALUES} \OPn{\VAR{type}} \OP{\OPn{\VAR{type}}
225 \Op{\VAR{other-args}}})}
227 Type specifier for multiple values.
230 \end{LIST}