Unfinished work on figure Data Types.
[clqr.git] / clqr-types-and-classes.mp
blob8a2e7a11a1bbee58f2b255e0e348a05766ee27ab
1 %&latex
2 prologues := 3;
3 input boxes
4 verbatimtex
5 \documentclass[8pt,pagesize,twoside,footexclude,headexclude]{scrartcl}
6 \input{clqr.packages}
7 \input{clqr.macros}
8 \begin{document}
9 etex
11 beginfig(49);
12 %  boxit.k(btex \FU{blah} etex);
13 %  boxit.i(btex \MC{ABRACADABRA} etex);
14 %  k.nw = i.se + (30, -10);
15 %  drawboxed(k,i);
16 %  drawarrow k.w{left} .. i.s{up};
17 %  drawarrow k.n{up} .. i.s{left};
18   
19   boxit.t(btex \T etex);
20   drawboxed(t);
22   boxjoin(a.sw + (0, -2) = b.nw);
23   boxit.atom(btex \kwd*{ATOM} etex);
24   boxit.hash_table(btex \kwd*{HASH-TABLE} etex);
25   boxit.structure_object(btex \kwd*{STRUCTURE-OBJECT} etex);
26   boxit.package(btex \kwd*{PACKAGE} etex);
27   boxit.readtable(btex \kwd*{READTABLE} etex);
28   boxit.random_state(btex \kwd*{RANDOM-STATE} etex);
29   boxit.restart(btex \kwd*{RESTART} etex);
30   boxit.standard_object(btex \kwd*{STANDARD-OBJECT} etex);
31   t.se + (1, -1) = atom.nw;
32   drawboxed(atom,hash_table,structure_object,package,readtable,random_state,restart,standard_object);
33   
34   boxjoin(a.e + (2, 0) = b.w);
35   boxit.symbol(btex \kwd*{SYMBOL} etex);
36   boxit.sequence(btex \kwd*{SEQUENCE} etex);
37   boxit.array(btex \kwd*{ARRAY}\OP{\VAR{type}\DF{\kwd{\A}}\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
38   boxit.character(btex \kwd*{CHARACTER} etex);
39   boxit.stream(btex \kwd*{STREAM} etex);
40   boxit.pathname(btex \kwd*{PATHNAME} etex);
41   boxit.function(btex \kwd*{FUNCTION} \OP{\VAR{arg-types }\Op{\VAR{value-types}}} etex);
42   boxit.number(btex \kwd*{NUMBER} etex);
43   atom.e + (1, 0) = symbol.w;
44   drawboxed(symbol,number,sequence,array,character,stream,pathname,function);
45   
47   boxjoin(a.ne + (3, 0) = b.nw);
48   boxit.real(btex \kwd*{REAL}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
49   boxit.complex(btex \kwd*{COMPLEX}\Op{\VAR{type}\DF{\kwd{\A}}} etex);
50   number.sw + (20, -20) = real.nw;
51   drawboxed(real,complex);
52   
53   boxjoin(a.se + (0, -3) = b.ne);
54   boxit.rational(btex \kwd*{RATIONAL}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
55   boxit.ratio(btex \kwd*{RATIO} etex);
56   boxit.integer(btex \kwd*{INTEGER}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
57   boxit.signed_byte(btex \kwd*{SIGNED-BYTE}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
58   boxit.unsigned_byte(btex \kwd*{UNSIGNED-BYTE}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
59   boxit.bit(btex \kwd*{BIT} etex);
60   boxit.fixnum(btex \kwd*{FIXNUM} etex);
61   boxit.bignum(btex \kwd*{BIGNUM} etex);
62   real.s + (0, -5) = rational.ne;
63   drawboxed(rational,ratio,integer,signed_byte,unsigned_byte,bit,fixnum,bignum);
65   boxjoin(a.sw + (0, -3) = b.nw);
66   boxit.float(btex \kwd*{FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
67   boxit.short_float(btex \kwd*{SHORT-FLOAT}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
68   boxit.single_float(btex \kwd*{SINGLE-FLOAT}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
69   boxit.double_float(btex \kwd*{DOUBLE-FLOAT}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
70   boxit.long_float(btex \kwd*{LONG-FLOAT}\OP{\VAR{lower-limit}\DF{\kwd{\A}}\Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
71   real.s + (3, -5) = float.nw;
72   drawboxed(float,short_float,single_float,double_float,long_float);
74   
75   boxjoin(a.sw + (0, -1) = b.nw);
76   boxit.list(btex \kwd*{LIST} etex);
77   boxit.null(btex \kwd*{NULL} etex);
78   boxit.simple_array(btex \kwd*{SIMPLE-ARRAY} \OP{\VAR{type}\DF{\kwd{\A}}\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
79   boxit.vector(btex \kwd*{VECTOR}\OP{\VAR{type}\DF{\kwd{\A}}\Op{\VAR{size}\DF{\kwd{\A}}}} etex);
80   boxit.string_(btex \kwd*{STRING}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
81   boxit.simple_string(btex \kwd*{SIMPLE-STRING}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
82   boxit.base_string(btex \kwd*{BASE-STRING}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
83   boxit.simple_vector(btex \kwd*{SIMPLE-VECTOR}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
84   boxit.simple_base_string(btex \kwd*{SIMPLE-BASE-STRING}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
85   boxit.bit_vector(btex \kwd*{BIT-VECTOR}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
86   boxit.simple_bit_vector(btex \kwd*{SIMPLE-BIT-VECTOR}\Op{\VAR{size}\DF{\kwd{\A}}} etex);
87   sequence.sw + (50, -60) = list.nw;
88   drawboxed(list,null,vector,simple_array,string_,simple_string,base_string,simple_vector,simple_base_string,bit_vector,simple_bit_vector);
89   
90   boxjoin();
91   boxit.cons(btex \kwd*{CONS}\OP{\VAR{car-type}\DF{\kwd{\A}}\Op{\VAR{cdr-type}\DF{\kwd{\A}}}} etex);
92   list.e + (5, 0) = cons.w;
93   drawboxed(cons);
95   
96   boxjoin(a.sw = b.nw);
97   boxit.base_char(btex \kwd*{BASE-CHAR} etex);
98   boxit.standard_char(btex \kwd*{STANDARD-CHAR} etex);
99   boxit.extended_char(btex \kwd*{EXTENDED-CHAR} etex);
100   character.se = base_char.ne;
101   drawboxed(base_char,standard_char,extended_char);
102   
103   boxjoin(a.sw = b.nw);
104   boxit.file_stream(btex \kwd*{FILE-STREAM} etex);
105   boxit.two_way_stream(btex \kwd*{TWO-WAY-STREAM} etex);
106   boxit.synonym_stream(btex \kwd*{SYNONYM-STREAM} etex);
107   boxit.string_stream(btex \kwd*{STRING-STREAM} etex);
108   boxit.broadcast_stream(btex \kwd*{BROADCAST-STREAM} etex);
109   boxit.echo_stream(btex \kwd*{ECHO-STREAM} etex);
110   boxit.concatenated_stream(btex \kwd*{CONCATENATED-STREAM} etex);
111   stream.sw + (0, -80) = file_stream.nw;
112   drawboxed(file_stream,two_way_stream,synonym_stream,string_stream,broadcast_stream,echo_stream,concatenated_stream);
113   
114   boxjoin(a.sw = b.nw);
115   boxit.logical_pathname(btex \kwd*{LOGICAL-PATHNAME} etex);
116   pathname.s + (0, -3) = logical_pathname.n;
117   drawboxed(logical_pathname);
119   boxjoin(a.sw = b.nw);
120   boxit.keyword(btex \kwd*{KEYWORD} etex);
121   boxit.boolean_(btex \kwd*{BOOLEAN} etex);
122   symbol.sw + (0, -180) = keyword.nw;
123   drawboxed(keyword,boolean_);
125   boxjoin(a.sw = b.nw);
126   boxit.generic_function(btex \kwd*{GENERIC-FUNCTION} etex);
127   boxit.standard_generic_function(btex \kwd*{STANDARD-GENERIC-FUNCTION} etex);
128   boxit.compiled_function(btex \kwd*{COMPILED-FUNCTION} etex);
129   function.sw = generic_function.nw;
130   drawboxed(generic_function,standard_generic_function,compiled_function);
132   boxjoin(a.s = b.n);
133   boxit.class(btex \kwd*{CLASS} etex);
134   boxit.standard_class(btex \kwd*{STANDARD-CLASS} etex);
135   boxit.built_in_class(btex \kwd*{BUILT-IN-CLASS} etex);
136   boxit.structure_class(btex \kwd*{STRUCTURE-CLASS} etex);
138   boxit.method(btex \kwd*{METHOD} etex);
139   boxit.standard_method(btex \kwd*{STANDARD-METHOD} etex);
140   boxit.method_combination(btex \kwd*{METHOD-COMBINATION} etex);
141   standard_object.sw + (0, -5) = class.nw;
142   drawboxed(class,standard_class,built_in_class,structure_class,method,standard_method,method_combination);
143   
144   drawarrow standard_object.s .. class.n;
145   drawarrow class.w{left} .. standard_class.w{right};
146   drawarrow class.w{left} .. built_in_class.w{right};
147   drawarrow class.w{left} .. structure_class.w{right};
148   drawarrow standard_object.s{down} .. method.e{down} .. standard_method.e{left} dashed evenly;
150   drawarrow vector.w{left} .. string_.w;
151   drawarrow string_.w{left} .. base_string.w;
152   drawarrow vector.w{left} .. bit_vector.w;
153   drawarrow sequence.s{down} .. list.w{right};
154   drawarrow list.e .. cons.w;
155   drawarrow sequence.s{down} .. array.sw{right} .. simple_array.nw + (-2, 2) .. vector.w + (0, 3){right} dashed evenly;
156   drawarrow sequence.s{down} .. array.sw {right} .. simple_array.e{down} .. vector.e{down} .. simple_vector.e{left} dashed evenly;
157   drawarrow sequence.s{down} .. array.sw {right} .. simple_array.e{down} .. vector.e{down} .. bit_vector.e{down} .. simple_bit_vector.e{left} dashed evenly;
158   drawarrow sequence.s{down} .. array.sw {right} .. simple_array.e{down} .. vector.e{down} .. string_.e{down} .. simple_string.e{down} .. base_string.e{down} .. simple_base_string.e{left} dashed evenly;
160   drawarrow array.s{down} .. simple_array.n{down};
162   drawarrow float.e{right} .. short_float.e{left};
163   drawarrow float.e{right} .. single_float.e{left};
164   drawarrow float.e{right} .. double_float.e{left};
165   drawarrow float.e{right} .. long_float.e{left};
167   drawarrow rational.s{down} .. integer.n{down};
168   drawarrow rational.s{down} .. ratio.w{right};
170   drawarrow integer.w{left} .. signed_byte.w{right};
171   drawarrow integer.w{left} .. fixnum.w{right};
172   drawarrow integer.w{left} .. bignum.w{right};
173 endfig;
176 %\boxGOO{%
177 %  \T\index{T}%
178 %  \boxGOO{%
179 %    \kwd*{NUMBER}
180 %    \boxGOO{%
181 %      \kwd*{REAL } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
182 %      \boxGOO{%
183 %        \kwd*{RATIONAL } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
184 %        \boxGOO{%
185 %          \kwd*{INTEGER } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
186 %          \boxGOO{%
187 %            \kwd*{SIGNED-BYTE } \Op{\VAR{size}\DF{\kwd{\A}}}\\
188 %            \boxGOO{\kwd*{UNSIGNED-BYTE } \Op{\VAR{size}\DF{\kwd{\A}}}
189 %              \boxGOO{\kwd*{BIT} }}\boxGOOcr
190 %            \kwd*{FIXNUM} ;\>
191 %            \kwd*{BIGNUM}
192 %          }\boxGOOcr
193 %          \kwd*{RATIO}}\boxGOOcr
194 %        \kwd*{FLOAT } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
195 %        \boxGOO{%
196 %          \kwd*{SHORT-FLOAT } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
197 %          \kwd*{SINGLE-FLOAT } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
198 %          \kwd*{DOUBLE-FLOAT } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}\\
199 %          \kwd*{LONG-FLOAT } \OP{\VAR{lower-limit}\DF{\kwd{\A}}\text{ }\Op{\VAR{upper-limit}\DF{\kwd{\A}}}}}}\boxGOOcr
200 %      \kwd*{COMPLEX } \Op{\VAR{type}\DF{\kwd{\A}}}}\boxGOOcr
201 %    \kwd*{SEQUENCE}
202 %    \boxGOO{%
203 %      \kwd*{LIST}
204 %      \boxGOO{%
205 %        \kwd*{CONS } \OP{\VAR{car-type}\DF{\kwd{\A}}\text{ }\Op{\VAR{cdr-type}\DF{\kwd{\A}}}}\\
206 %      \kwd*{SYMBOL}\footnotemark[2]
207 %      \boxGOO{
208 %        \kwd*{NULL}}}\boxGOOcr
209 %      \kwd*{ARRAY}\footnotemark[2] \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}}\\
210 %      \boxGOO{%
211 %        \kwd*{SIMPLE-ARRAY}\footnotemark[2] \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}}\\
212 %        \boxGOO{%
213 %          \kwd*{VECTOR}\footnotemark[2] \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{size}\DF{\kwd{\A}}}}\\
214 %          \boxGOO{%
215 %            \kwd*{BIT-VECTOR}\footnotemark[2] \Op{\VAR{size}\DF{\kwd{\A}}}\\
216 %            \boxGOO{%
217 %              \kwd*{SIMPLE-BIT-VECTOR } \Op{\VAR{size}\DF{\kwd{\A}}}}\boxGOOcr
218 %            \kwd*{STRING}\footnotemark[2] \Op{\VAR{size}\DF{\kwd{\A}}}\\
219 %            \boxGOO{%
220 %              \kwd*{SIMPLE-STRING } \Op{\VAR{size}\DF{\kwd{\A}}}\\
221 %              \boxGOO{%
222 %                \kwd*{BASE-STRING}\footnotemark[2] \Op{\VAR{size}\DF{\kwd{\A}}}\\
223 %                \boxGOO{%
224 %                  \kwd*{SIMPLE-BASE-STRING } \Op{\VAR{size}\DF{\kwd{\A}}}}}}\boxGOOcr
225 %            \kwd*{SIMPLE-VECTOR } \Op{\VAR{size}\DF{\kwd{\A}}}}}\boxGOOcr
226 %        \kwd*{VECTOR } \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{size}\DF{\kwd{\A}}}}\\
227 %        \boxGOO{%
228 %          \kwd*{STRING } \Op{\VAR{size}\DF{\kwd{\A}}}
229 %          \boxGOO{%
230 %            \kwd*{BASE-STRING } \Op{\VAR{size}\DF{\kwd{\A}}}}\boxGOOcr
231 %          \kwd*{BIT-VECTOR } \Op{\VAR{size}\DF{\kwd{\A}}}}}}\boxGOOcr
232 %    \kwd*{ARRAY} \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}}\\
233 %    \boxGOO{%
234 %      \kwd*{SIMPLE-ARRAY} \OP{\VAR{type}\DF{\kwd{\A}}\text{ }\Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}}
235 %    }\boxGOOcr
236 %    \kwd*{CHARACTER}
237 %    \boxGOO{%
238 %      \kwd*{BASE-CHAR}
239 %      \boxGOO{%
240 %        \kwd*{STANDARD-CHAR}}\boxGOOcr
241 %      \kwd*{EXTENDED-CHAR}}\boxGOOcr
242 %    \kwd*{STREAM}
243 %    \boxGOO{%
244 %      \kwd*{FILE-STREAM};\>
245 %      \kwd*{TWO-WAY-STREAM};\>
246 %      \kwd*{SYNONYM-STREAM};\\
247 %      \kwd*{STRING-STREAM};\>
248 %      \kwd*{BROADCAST-STREAM};\>
249 %      \kwd*{ECHO-STREAM};\\
250 %      \kwd*{CONCATENATED-STREAM}}\boxGOOcr
251 %    \kwd*{PATHNAME}
252 %    \boxGOO{%
253 %      \kwd*{LOGICAL-PATHNAME}}\boxGOOcr
254 %    \kwd*{SYMBOL}
255 %    \boxGOO{%
256 %      \kwd*{KEYWORD};\>
257 %      \kwd*{BOOLEAN}}\boxGOOcr
258 %    \kwd*{FUNCTION } \OP{\VAR{arg-types }\Op{\VAR{value-types}}}\\
259 %    \boxGOO{%
260 %      \kwd*{GENERIC-FUNCTION}
261 %      \boxGOO{\kwd*{STANDARD-GENERIC-FUNCTION}}\boxGOOcr
262 %      \kwd*{COMPILED-FUNCTION}}\boxGOOcr
263 %    \kwd*{STANDARD-OBJECT}
264 %    \boxGOO{%
265 %      \kwd*{CLASS}
266 %      \boxGOO{%
267 %        \kwd*{STANDARD-CLASS};\>
268 %        \kwd*{BUILT-IN-CLASS};\\
269 %        \kwd*{STRUCTURE-CLASS}}\boxGOOcr
270 %      \kwd*{METHOD}\footnotemark[2]
271 %      \boxGOO{%
272 %        \kwd*{STANDARD-METHOD}}}\boxGOOcr
273 %    \kwd*{ATOM};\>
274 %    \kwd*{HASH-TABLE};\>
275 %    \kwd*{STRUCTURE-OBJECT};\>
276 %    \kwd*{PACKAGE};\>
277 %    \kwd*{READTABLE};\\
278 %    \kwd*{RANDOM-STATE};\>
279 %    \kwd*{RESTART};\>
280 %    \kwd*{METHOD};\>
281 %    \kwd*{METHOD-COMBINATION}}}
282 verbatimtex
283 \end{document}
284 etex