1 % Copyright (C) 2010 Bert Burgemeister
3 % Permission is granted to copy, distribute and/or modify this
4 % document under the terms of the GNU Free Documentation License,
5 % Version 1.2 or any later version published by the Free Software
6 % Foundation; with no Invariant Sections, no Front-Cover Texts and
7 % no Back-Cover Texts. For details see file COPYING.
12 \documentclass[8pt,pagesize,twoside,footexclude,headexclude]{scrartcl}
20 boxit.t(btex \T etex);
24 boxjoin(a.sw + (0, -3) = b.nw);
25 boxit.atom(btex \kwd*{ATOM} etex);
26 boxit.package(btex \kwd*{PACKAGE} etex);
27 boxit.readtable(btex \kwd*{READTABLE} etex);
28 t.se + (12, 0) = atom.nw;
29 drawboxed(atom,package,readtable);
31 boxjoin(a.sw + (0, -3) = b.nw);
32 boxit.hash_table(btex \kwd*{HASH-TABLE} etex);
33 boxit.structure_object(btex \kwd*{STRUCTURE-OBJECT} etex);
34 boxit.random_state(btex \kwd*{RANDOM-STATE} etex);
35 boxit.restart(btex \kwd*{RESTART} etex);
36 boxit.standard_object(btex \kwd*{STANDARD-OBJECT} etex);
37 boxit.class(btex \kwd*{CLASS} etex);
38 boxit.built_in_class(btex \kwd*{BUILT-IN-CLASS} etex);
39 boxit.standard_class(btex \kwd*{STANDARD-CLASS} etex);
40 boxit.structure_class(btex \kwd*{STRUCTURE-CLASS} etex);
41 readtable.sw + (0,-12) = hash_table.nw;
42 drawboxed(hash_table,structure_object,random_state,restart,standard_object,class,built_in_class,standard_class,structure_class);
45 boxit.method(btex \kwd*{METHOD} etex);
46 structure_class.sw+(0, -5) = method.nw;
49 boxjoin(a.se + (0, -3) = b.ne);
50 boxit.standard_method(btex \kwd*{STANDARD-METHOD} etex);
51 boxit.method_combination(btex \kwd*{METHOD-COMBINATION} etex);
52 method.sw + (-9,-5) = standard_method.nw;
53 drawboxed(standard_method,method_combination);
56 boxit.character(btex \kwd*{CHARACTER} etex);
57 atom.ne + (293, -5) = character.nw;
60 boxjoin(a.se + (0, -3) = b.ne);
61 boxit.function(btex \kwd*{FUNCTION} \OP{\VAR{arg-types} \Op{\VAR{value-types}}} etex);
62 boxit.compiled_function(btex \kwd*{COMPILED-FUNCTION} etex);
63 boxit.generic_function(btex \kwd*{GENERIC-FUNCTION} etex);
64 boxit.standard_generic_function(btex \kwd*{STANDARD-GENERIC-FUNCTION} etex);
65 atom.ne + (214, -60) = function.nw;
66 drawboxed(function,compiled_function,generic_function,standard_generic_function);
68 boxjoin(a.ne + (10, 0) = b.nw);
69 boxit.pathname(btex \kwd*{PATHNAME} etex);
70 boxit.logical_pathname(btex \kwd*{LOGICAL-PATHNAME} etex);
71 logical_pathname.ne = (558,0);
72 drawboxed(pathname,logical_pathname);
75 boxit.stream(btex \kwd*{STREAM} etex);
76 logical_pathname.sw + (0, -3) = stream.ne;
80 boxjoin(a.se + (0, -3) = b.ne);
81 boxit.float(btex \kwd*{FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
82 boxit.short_float(btex \kwd*{SHORT-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
83 boxit.single_float(btex \kwd*{SINGLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
84 boxit.double_float(btex \kwd*{DOUBLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
85 boxit.long_float(btex \kwd*{LONG-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
87 boxjoin(a.sw + (0, -3) = b.nw);
88 boxit.number(btex \kwd*{NUMBER} etex);
89 boxit.complex(btex \kwd*{COMPLEX} \Op{\VAR{type}\DF{\kwd{\A}}} etex);
90 boxit.real(btex \kwd*{REAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
92 long_float.se = (542, -242);
93 real.s + (0,-3) = float.n;
95 drawboxed(float,short_float,single_float,double_float,long_float);
96 drawboxed(number,complex,real);
98 boxjoin(a.sw + (0, -3) = b.nw);
99 boxit.rational(btex \kwd*{RATIONAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
100 boxit.integer(btex \kwd*{INTEGER} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
101 boxit.ratio(btex \kwd*{RATIO} etex);
102 standard_generic_function.se+(-7,-11) = rational.ne;
103 drawboxed(rational,integer,ratio);
105 boxjoin(a.e + (3, 0) = b.w);
106 boxit.signed_byte(btex \kwd*{SIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
107 boxit.fixnum(btex \kwd*{FIXNUM} etex);
108 boxit.bignum(btex \kwd*{BIGNUM} etex);
109 ratio.sw+(-10,-3) = signed_byte.nw;
110 drawboxed(signed_byte,fixnum,bignum);
112 boxjoin(a.se + (0,-3) = b.ne);
113 boxit.unsigned_byte(btex \kwd*{UNSIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
114 boxit.bit(btex \kwd*{BIT} etex);
115 signed_byte.se+(30,-3) = unsigned_byte.n;
116 drawboxed(unsigned_byte,bit);
118 boxjoin(a.e + (10,0) = b.w);
119 boxit.sequence(btex \kwd*{SEQUENCE} etex);
120 boxit.list(btex \kwd*{LIST} etex);
121 boxit.cons(btex \kwd*{CONS} \OP{\VAR{car-type}\DF{\kwd{\A}} \Op{\VAR{cdr-type}\DF{\kwd{\A}}}} etex);
122 sequence.nw = (97,-32);
123 drawboxed(sequence,list,cons);
125 boxjoin(a.sw + (-5, -3) = b.nw);
126 boxit.symbol(btex \kwd*{SYMBOL} etex);
127 boxit.null(btex \kwd*{NULL} etex);
128 list.se + (5, -3) = symbol.ne;
129 drawboxed(symbol,null);
131 boxjoin(a.sw + (0, -3) = b.nw);
132 boxit.array(btex \kwd*{ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
133 boxit.simple_array(btex \kwd*{SIMPLE-ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
134 boxit.vector(btex \kwd*{VECTOR} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{size}\DF{\kwd{\A}}}} etex);
135 boxit.string_(btex \kwd*{STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
136 boxit.simple_string(btex \kwd*{SIMPLE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
137 boxit.base_string(btex \kwd*{BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
138 boxit.simple_base_string(btex \kwd*{SIMPLE-BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
139 boxit.simple_vector(btex \kwd*{SIMPLE-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
140 boxit.bit_vector(btex \kwd*{BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
141 null.sw + (-25, -10) = array.nw;
142 drawboxed(array,vector,simple_array,string_,simple_string,base_string,simple_base_string,simple_vector,bit_vector);
145 boxit.simple_bit_vector(btex \kwd*{SIMPLE-BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
146 bit_vector.se + (15, -3) = simple_bit_vector.sw;
147 drawboxed(simple_bit_vector);
149 boxjoin(a.se + (0, -3) = b.ne);
150 boxit.file_stream(btex \kwd*{FILE-STREAM} etex);
151 boxit.two_way_stream(btex \kwd*{TWO-WAY-STREAM} etex);
152 boxit.synonym_stream(btex \kwd*{SYNONYM-STREAM} etex);
153 boxit.string_stream(btex \kwd*{STRING-STREAM} etex);
154 boxit.concatenated_stream(btex \kwd*{CONCATENATED-STREAM} etex);
155 boxit.broadcast_stream(btex \kwd*{BROADCAST-STREAM} etex);
156 boxit.echo_stream(btex \kwd*{ECHO-STREAM} etex);
157 logical_pathname.se + (0, -5) = file_stream.ne;
158 drawboxed(file_stream,two_way_stream,synonym_stream,string_stream,concatenated_stream,broadcast_stream,echo_stream);
160 boxjoin(a.sw + (-13, 3) = b.ne);
161 boxit.keyword(btex \kwd*{KEYWORD} etex);
162 boxit.boolean_(btex \kwd*{BOOLEAN} etex);
163 symbol.se + (27,0) = boolean_.nw;
164 drawboxed(keyword,boolean_);
166 boxjoin(a.se + (0, -3) = b.ne);
167 boxit.extended_char(btex \kwd*{EXTENDED-CHAR} etex);
168 boxit.base_char(btex \kwd*{BASE-CHAR} etex);
169 character.e + (10,-10) = extended_char.w;
170 drawboxed(extended_char,base_char);
173 boxit.standard_char(btex \kwd*{STANDARD-CHAR} etex);
174 base_char.sw + (0,-3) = standard_char.nw;
175 drawboxed(standard_char);
177 drawarrow t.e{right} .. {right}t.e+(40,0) .. sequence.n{down};
178 drawarrow t.e{right} .. {right}t.e+(150,0) .. cons.ne+(2,3) .. function.n{down};
179 drawarrow t.e{right} .. {right}t.e+(150,0) .. cons.ne+(2,9) .. standard_char.sw+(-3,-3) .. number.n{down};
180 drawarrow t.e{right} .. {right}t.e+(150,0) .. character.w+(-60,8) .. character.w{right};
181 drawarrow t.e{right} .. {right}t.e+(300,0) .. stream.w{right};
182 drawarrow t.e{right} .. {right}t.e+(300,0) .. pathname.w{right};
184 drawarrow t.s{down} ... atom.w{right};
185 drawarrow t.s{down} ... package.w{right};
186 drawarrow t.s{down} ... readtable.w{right};
188 drawarrow t.s{down} ... readtable.sw+(6,-6){right} .. symbol.w{right};
189 drawarrow t.s{down} ... readtable.sw+(6,-6){right} .. array.nw+(10,0){down};
191 drawarrow t.s{down} ... hash_table.w{right};
192 drawarrow t.s{down} ... structure_object.w{right};
193 drawarrow t.s{down} ... random_state.w{right};
194 drawarrow t.s{down} ... restart.w{right};
195 drawarrow t.s{down} ... standard_object.w{right};
196 drawarrow t.s{down} ... standard_class.w+(-15,-15) .. method.w{right};
198 drawarrow standard_object.s+(3,0){down} .. class.e{left};
199 drawarrow class.w{left} ... built_in_class.w+(-9,0) ... standard_class.w{right};
200 drawarrow class.w{left} ... class.sw+(-6,0) ... built_in_class.w{right};
201 drawarrow class.w{left} ... standard_class.sw+(-9,0) ... structure_class.w{right};
202 drawarrow t.s{down} .. method_combination.nw+(5,0){down};
204 drawarrow standard_object.s+(3,0){down} .. built_in_class.ne+(2,2) ... standard_class.e+(7,0) ... structure_class.se+(2,-2) .. method.e{down} .. standard_method.ne+(5,2) .. standard_method.e{left} dashed evenly;
206 drawarrow vector.w{left} ... vector.sw+(-6,0) ... string_.w+(0,3){right};
207 drawarrow string_.w+(0,-3){left} ... simple_string.w+(-8,0) ... base_string.w{right};
208 drawarrow vector.w{left} ... base_string.w+(-12,0) ... bit_vector.w{right};
209 drawarrow sequence.e{right} .. list.w{right};
210 drawarrow list.e .. cons.w;
212 drawarrow symbol.e{right} .. keyword.w{right};
213 drawarrow symbol.e{right} .. boolean_.w{right};
215 drawarrow list.e{right} .. symbol.se+(1,-2) .. symbol.se+(-3,0){left} .. null.e{left} dashed evenly;
218 drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.se+(0,-18) .. vector.e + (0, 3) {left} dashed evenly;
219 drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down} .. vector.se + (2,-1){down} .. simple_base_string.se+(5,0) .. simple_vector.e{left} dashed evenly;
220 drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down} .. vector.se + (2,-1){down} .. simple_base_string.se+(10,0) .. simple_vector.se+(0, -3) .. bit_vector.e{down} ... simple_bit_vector.w{right} dashed evenly;
221 drawarrow sequence.s{down} .. null.s+(0,-6){right} .. boolean_.s+(10,-5) .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(0,6){right} .. simple_array.ne+(2,1){down} .. simple_array.e{down} .. simple_array.se+(2,-1){down}.. vector.ne+(30,0) .. vector.ne+(10,0) .. vector.e + (0, -3){down} .. vector.se + (2,-1){down} .. string_.e{down} .. simple_string.ne+(2,1){down} .. simple_string.e{down} .. simple_string.se+(2,1){down} .. base_string.e+(0,3){down} .. simple_base_string.ne+(-10,0){down} dashed evenly;
223 drawarrow array.w{left} ... array.sw+(-7,-3).. simple_array.w{right};
225 drawarrow character.s{down} ... base_char.w{right};
226 drawarrow character.s{down} .. extended_char.w{right};
227 drawarrow base_char.e{right} .. standard_char.ne+(-7,0){down};
229 drawarrow function.s+(-20,0){down} .. compiled_function.w{right};
230 drawarrow function.s+(-20,0){down} .. generic_function.w+(0,3){right};
231 drawarrow generic_function.w+(0,-3){left} .. standard_generic_function.nw+(20,0){down};
233 drawarrow number.w{left} ... number.sw+(-6,0) ... complex.w{right};
234 drawarrow number.w{left} ... complex.w+(-10,0) ... real.w+(0,3){right};
236 drawarrow real.w+(0,-3){left} .. rational.e{left};
237 drawarrow real.w+(0,-3){left} .. float.w{right};
239 drawarrow float.e{right} ... short_float.ne+(6,-3) ... short_float.e{left};
240 drawarrow float.e{right} ... short_float.e+(10,0) ... single_float.e{left};
241 drawarrow float.e{right} ... short_float.se+(13,-3) ... double_float.e{left};
242 drawarrow float.e{right} ... single_float.e+(16,0) ... long_float.e{left};
244 drawarrow rational.w{left} ... rational.sw+(-7,0) ... integer.w{right};
245 drawarrow rational.w{left} ... integer.w+(-10,0) ... ratio.w{right};
247 drawarrow integer.s+(12,0){down} .. signed_byte.ne+(-5,0){down};
248 drawarrow integer.s+(12,0){down} .. fixnum.n{down};
249 drawarrow integer.s+(12,0){down} .. bignum.nw+(5,0){down};
251 drawarrow signed_byte.s{down} ... unsigned_byte.w{right};
252 drawarrow unsigned_byte.s{down} ... bit.w{right};
254 drawarrow stream.s{down} .. two_way_stream.nw+(-2,2) .. file_stream.w{right};
255 drawarrow stream.s{down} .. two_way_stream.w{right};
256 drawarrow stream.s{down} ... synonym_stream.w{right};
257 drawarrow stream.s{down} ... string_stream.w{right};
258 drawarrow stream.s{down} .. stream.s+(0,-12){down} .. concatenated_stream.nw+(10,0){down};
259 drawarrow stream.s{down} .. broadcast_stream.w{right};
260 drawarrow stream.s{down} .. concatenated_stream.sw+(-6,-5) .. echo_stream.w{right};
262 drawarrow pathname.e{right} .. logical_pathname.w{right};