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.
10 % prologues := 3 makes clqr-types-and-classes.1 viewable but uses the
16 \documentclass[8pt,pagesize,twoside,footexclude,headexclude]{scrartcl}
22 def halfdisc_e(expr point) =
23 fill halfcircle scaled 4 rotated -90 shifted point --cycle enddef;
25 def halfdisc_n(expr point) =
26 fill halfcircle scaled 4 shifted point --cycle enddef;
28 def halfdisc_s(expr point) =
29 fill halfcircle scaled 4 rotated 180 shifted point --cycle enddef;
35 pickup pencircle scaled .3;
37 boxit.t(btex \T etex);
41 boxjoin(a.sw + (0, -3) = b.nw);
42 boxit.atom(btex \kwd*{ATOM} etex);
43 boxit.readtable(btex \kwd*{READTABLE} etex);
44 boxit.package(btex \kwd*{PACKAGE} etex);
45 boxit.symbol(btex \kwd*{SYMBOL} etex);
46 t.se + (12, 0) = atom.nw;
47 drawboxed(atom,readtable,package,symbol);
49 boxjoin(a.sw + (0, -3) = b.nw);
50 boxit.keyword(btex \kwd*{KEYWORD} etex);
51 boxit.boolean_(btex \kwd*{BOOLEAN} etex);
52 symbol.sw + (35,-3) = keyword.nw;
53 drawboxed(keyword,boolean_);
55 boxjoin(a.sw + (0, -3) = b.nw);
56 boxit.restart(btex \kwd*{RESTART} etex);
57 boxit.random_state(btex \kwd*{RANDOM-STATE} etex);
58 boxit.hash_table(btex \kwd*{HASH-TABLE} etex);
59 boxit.structure_object(btex \kwd*{STRUCTURE-OBJECT} etex);
60 boxit.standard_object(btex \kwd*{STANDARD-OBJECT} etex);
61 boolean_.sw + (-35,-5) = restart.nw;
62 drawboxed(restart,random_state,hash_table,structure_object,standard_object);
65 boxit.null(btex \kwd*{NULL} etex);
66 symbol.se+(15,0) = null.sw;
70 boxit.class(btex \kwd*{CLASS} etex);
71 standard_object.sw + (-10,-3) = class.nw ;
74 boxjoin(a.sw + (0, -3) = b.nw);
75 boxit.built_in_class(btex \kwd*{BUILT-IN-CLASS} etex);
76 boxit.standard_class(btex \kwd*{STANDARD-CLASS} etex);
77 boxit.structure_class(btex \kwd*{STRUCTURE-CLASS} etex);
78 class.sw + (15,-3) = built_in_class.nw;
79 drawboxed(built_in_class,standard_class,structure_class);
82 boxit.method(btex \kwd*{METHOD} etex);
83 structure_class.sw+(0, -5) = method.nw;
86 boxjoin(a.se + (2, -3) = b.ne);
87 boxit.standard_method(btex \kwd*{STANDARD-METHOD} etex);
88 boxit.method_combination(btex \kwd*{METHOD-COMBINATION} etex);
89 method.sw + (-14,-5) = standard_method.nw;
90 drawboxed(standard_method,method_combination);
93 boxit.character(btex \kwd*{CHARACTER} etex);
94 atom.ne + (23, -10) = character.nw;
98 boxit.function(btex \kwd*{FUNCTION} \OP{\VAR{arg-types} \Op{\VAR{value-types}}} etex);
99 function.nw = (205, -10);
102 boxjoin(a.sw + (0, -3) = b.nw);
103 boxit.compiled_function(btex \kwd*{COMPILED-FUNCTION} etex);
104 boxit.generic_function(btex \kwd*{GENERIC-FUNCTION} etex);
105 boxit.standard_generic_function(btex \kwd*{STANDARD-GENERIC-FUNCTION} etex);
106 function.se + (0,-3) = compiled_function.ne;
107 drawboxed(compiled_function,generic_function,standard_generic_function);
109 boxjoin(a.sw + (0,-3) = b.nw);
110 boxit.pathname(btex \kwd*{PATHNAME} etex);
111 boxit.logical_pathname(btex \kwd*{LOGICAL-PATHNAME} etex);
112 pathname.nw = (345,-20);
113 drawboxed(pathname,logical_pathname);
115 boxjoin(a.se + (0, -3) = b.ne);
116 boxit.number(btex \kwd*{NUMBER} etex);
117 boxit.complex(btex \kwd*{COMPLEX} \Op{\VAR{type}\DF{\kwd{\A}}} etex);
118 boxit.real(btex \kwd*{REAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
119 number.nw = (433,-44);
120 drawboxed(number,complex,real);
123 boxit.float(btex \kwd*{FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
124 real.s + (15,-3) = float.n;
127 boxjoin(a.se + (0, -3) = b.ne);
128 boxit.short_float(btex \kwd*{SHORT-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
129 boxit.single_float(btex \kwd*{SINGLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
130 boxit.double_float(btex \kwd*{DOUBLE-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
131 boxit.long_float(btex \kwd*{LONG-FLOAT} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
132 boxit.rational(btex \kwd*{RATIONAL} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
133 boxit.integer(btex \kwd*{INTEGER} \OP{\VAR{lower-limit}\DF{\kwd{\A}} \Op{\VAR{upper-limit}\DF{\kwd{\A}}}} etex);
134 float.se + (-15,-3) = short_float.ne;
135 drawboxed(short_float,single_float,double_float,long_float,rational,integer);
138 boxit.ratio(btex \kwd*{RATIO} etex);
139 integer.sw + (0,-3) = ratio.nw;
142 boxjoin(a.e + (3, 0) = b.w);
143 boxit.signed_byte(btex \kwd*{SIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
144 boxit.fixnum(btex \kwd*{FIXNUM} etex);
145 boxit.bignum(btex \kwd*{BIGNUM} etex);
146 ratio.sw+(-10,-3) = signed_byte.nw;
147 drawboxed(signed_byte,fixnum,bignum);
149 boxjoin(a.e + (10,0) = b.w);
150 boxit.unsigned_byte(btex \kwd*{UNSIGNED-BYTE} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
151 boxit.bit(btex \kwd*{BIT} etex);
152 signed_byte.sw+(25,-3) = unsigned_byte.nw;
153 drawboxed(unsigned_byte,bit);
155 boxjoin(a.e + (20,0) = b.w);
156 boxit.list(btex \kwd*{LIST} etex);
157 boxit.sequence(btex \kwd*{SEQUENCE} etex);
159 drawboxed(list,sequence);
162 boxit.cons(btex \kwd*{CONS} \OP{\VAR{car-type}\DF{\kwd{\A}} \Op{\VAR{cdr-type}\DF{\kwd{\A}}}} etex);
163 sequence.se+(7,-3) = cons.ne;
166 boxjoin(a.sw + (0, -3) = b.nw);
167 boxit.array(btex \kwd*{ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
168 boxit.simple_array(btex \kwd*{SIMPLE-ARRAY} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{rank}\DF{\kwd{\A}}\XOR(\OPn{\VAR{dimension}})}} etex);
169 boxit.vector(btex \kwd*{VECTOR} \OP{\VAR{type}\DF{\kwd{\A}} \Op{\VAR{size}\DF{\kwd{\A}}}} etex);
170 boxit.string_(btex \kwd*{STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
171 boxit.simple_string(btex \kwd*{SIMPLE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
172 boxit.base_string(btex \kwd*{BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
173 boxit.simple_base_string(btex \kwd*{SIMPLE-BASE-STRING} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
174 boxit.simple_vector(btex \kwd*{SIMPLE-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
175 boxit.bit_vector(btex \kwd*{BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
176 boxit.simple_bit_vector(btex \kwd*{SIMPLE-BIT-VECTOR} \Op{\VAR{size}\DF{\kwd{\A}}} etex);
177 cons.se + (18, -3) = array.ne;
178 drawboxed(array,vector,simple_array,string_,simple_string,base_string,simple_base_string,simple_vector,bit_vector,simple_bit_vector);
181 boxit.stream(btex \kwd*{STREAM} etex);
182 stream.ne = (315,-75);
185 boxjoin(a.se + (0, -3) = b.ne);
186 boxit.file_stream(btex \kwd*{FILE-STREAM} etex);
187 boxit.two_way_stream(btex \kwd*{TWO-WAY-STREAM} etex);
188 boxit.synonym_stream(btex \kwd*{SYNONYM-STREAM} etex);
189 boxit.string_stream(btex \kwd*{STRING-STREAM} etex);
190 boxit.broadcast_stream(btex \kwd*{BROADCAST-STREAM} etex);
191 boxit.concatenated_stream(btex \kwd*{CONCATENATED-STREAM} etex);
192 boxit.echo_stream(btex \kwd*{ECHO-STREAM} etex);
193 stream.se + (-33,-69) = file_stream.ne;
194 drawboxed(file_stream,two_way_stream,synonym_stream,string_stream,broadcast_stream,concatenated_stream,echo_stream);
196 boxjoin(a.se + (0, -3) = b.ne);
197 boxit.extended_char(btex \kwd*{EXTENDED-CHAR} etex);
198 boxit.base_char(btex \kwd*{BASE-CHAR} etex);
199 character.e + (10,0) = extended_char.w;
200 drawboxed(extended_char,base_char);
203 boxit.standard_char(btex \kwd*{STANDARD-CHAR} etex);
204 base_char.sw + (0,-3) = standard_char.nw;
205 drawboxed(standard_char);
210 boxjoin(a.sw + (0,-3) = b.nw);
211 boxit.condition(btex \kwd*{CONDITION} etex);
212 boxit.serious_condition(btex \kwd*{SERIOUS-CONDITION} etex);
213 t.e + (400,0) = condition.w;
214 drawboxed(condition,serious_condition);
216 boxjoin(a.sw + (0,-3) = b.nw);
217 boxit.storage_condition(btex \kwd*{STORAGE-CONDITION} etex);
218 boxit.simple_type_error(btex \kwd*{SIMPLE-TYPE-ERROR} etex);
219 serious_condition.e + (10,2) = storage_condition.w;
220 drawboxed(storage_condition,simple_type_error);
223 boxit.type_error(btex \kwd*{TYPE-ERROR} etex);
224 simple_type_error.sw + (15,-3) = type_error.nw;
225 drawboxed(type_error);
228 boxit.error(btex \kwd*{ERROR}\\ etex);
229 type_error.sw + (-15,-3) = error.nw;
232 boxjoin(a.sw + (0,-3) = b.nw);
233 boxit.program_error(btex \kwd*{PROGRAM-ERROR} etex);
234 boxit.control_error(btex \kwd*{CONTROL-ERROR} etex);
235 boxit.package_error(btex \kwd*{PACKAGE-ERROR} etex);
236 boxit.print_not_readable(btex \kwd*{PRINT-NOT-READABLE} etex);
237 boxit.stream_error(btex \kwd*{STREAM-ERROR} etex);
238 boxit.parse_error(btex \kwd*{PARSE-ERROR} etex);
239 boxit.cell_error(btex \kwd*{CELL-ERROR} etex);
240 boxit.file_error(btex \kwd*{FILE-ERROR} etex);
241 error.sw + (15,-3) = program_error.nw;
242 drawboxed(program_error,control_error,package_error,print_not_readable,stream_error,parse_error,cell_error,file_error);
245 boxit.arithmetic_error(btex \kwd*{ARITHMETIC-ERROR} etex);
246 file_error.sw + (-15,-3) = arithmetic_error.nw;
247 drawboxed(arithmetic_error);
250 boxit.simple_condition(btex \kwd*{SIMPLE-CONDITION} etex);
251 type_error.se+(10,-2) = simple_condition.w;
252 drawboxed(simple_condition);
255 boxit.warning(btex \kwd*{WARNING} etex);
256 condition.ne + (120,0) = warning.nw;
259 boxjoin(a.sw + (0,-3) = b.nw);
260 boxit.style_warning(btex \kwd*{STYLE-WARNING} etex);
261 warning.sw + (0,-3) = style_warning.nw;
262 drawboxed(style_warning);
264 boxjoin(a.sw + (0,-3) = b.nw);
265 boxit.simple_error(btex \kwd*{SIMPLE-ERROR} etex);
266 boxit.simple_warning(btex \kwd*{SIMPLE-WARNING} etex);
267 simple_condition.s + (0, -10) = simple_error.n;
268 drawboxed(simple_error,simple_warning);
270 boxjoin(a.se + (0,-3) = b.ne);
271 boxit.undefined_function(btex \kwd*{UNDEFINED-FUNCTION} etex);
272 boxit.unbound_variable(btex \kwd*{UNBOUND-VARIABLE} etex);
273 boxit.unbound_slot(btex \kwd*{UNBOUND-SLOT} etex);
274 cell_error.e + (15,0) = undefined_function.w;
275 drawboxed(unbound_variable,undefined_function,unbound_slot);
277 boxjoin(a.se + (0,-3) = b.ne);
278 boxit.end_of_file(btex \kwd*{END-OF-FILE} etex);
279 boxit.reader_error(btex \kwd*{READER-ERROR} etex);
280 stream_error.e + (33,6) = end_of_file.w;
281 drawboxed(end_of_file,reader_error);
283 boxjoin(a.sw + (0,-3) = b.nw);
284 boxit.division_by_zero(btex \kwd*{DIVISION-BY-ZERO} etex);
285 boxit.floating_point_inexact(btex \kwd*{FLOATING-POINT-INEXACT} etex);
286 boxit.floating_point_overflow(btex \kwd*{FLOATING-POINT-OVERFLOW} etex);
287 boxit.floating_point_underflow(btex \kwd*{FLOATING-POINT-UNDERFLOW} etex);
288 boxit.floating_point_invalid_operation(btex \kwd*{FLOATING-POINT-INVALID-OPERATION} etex);
289 arithmetic_error.sw + (20,-3) = division_by_zero.nw;
290 drawboxed(division_by_zero,floating_point_inexact,floating_point_overflow,floating_point_underflow,floating_point_invalid_operation);
293 drawarrow t.e{right} ... character.n{down};
294 drawarrow t.e{right} .. t.e+(121,0){right} ... sequence.n{down};
295 drawarrow t.e{right} .. t.e+(124,0){right} .. stream.w{right};
296 drawarrow t.e{right} .. t.e+(126,0){right} .. function.w{right};
297 drawarrow t.e{right} .. t.e+(270,0){right} ... pathname.n{down};
298 drawarrow t.e{right} .. t.e+(280,0){right} ... pathname.ne+(3,3) .. serious_condition.sw+(-3,-3) .. number.n{down};
299 drawarrow t.e{right} .. condition.w{right};
301 drawarrow t.s{down} ... atom.w{right};
302 drawarrow t.s{down} ... readtable.w{right};
303 drawarrow t.s{down} ... package.w{right};
304 drawarrow t.s{down} ... symbol.w{right};
306 drawarrow t.s{down} .. t.s+(0,-25){down} ... array.w+(0,3){right};
307 drawarrow t.s{down} .. t.s+(0,-25){down} ... restart.w{right};
308 drawarrow t.s{down} .. t.s+(0,-25){down} ... random_state.w{right};
309 drawarrow t.s{down} .. t.s+(0,-25){down} ... hash_table.w{right};
310 drawarrow t.s{down} .. t.s+(0,-25){down} ... structure_object.w{right};
311 drawarrow t.s{down} .. t.s+(0,-25){down} ... standard_object.w{right};
312 drawarrow t.s{down} .. t.s+(0,-25){down} ... method.w{right};
315 drawarrow standard_object.s{down} .. class.e{left};
316 drawarrow class.sw+(5,0){down} ... standard_class.w{right};
317 drawarrow class.sw+(5,0){down} ... built_in_class.w{right};
318 drawarrow class.sw+(5,0){down} ... structure_class.w{right};
319 drawarrow t.s{down} -- (xpart t.s, ypart method_combination.nw);
321 drawarrow standard_object.s{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;
322 halfdisc_e (method.e);
324 drawarrow vector.w{left} ... vector.sw+(-6,0) ... string_.w+(0,3){right};
325 drawarrow string_.w+(0,-3){left} ... simple_string.w+(-8,0) ... base_string.w{right};
326 drawarrow vector.w{left} ... base_string.w+(-12,0) ... bit_vector.w{right};
327 drawarrow sequence.w{left} .. list.e{left};
328 drawarrow list.w{left} ... cons.nw+(15,0){down};
330 drawarrow symbol.s{down} ... keyword.w{right};
331 drawarrow symbol.s{down} ... boolean_.w{right};
333 drawarrow list.w{left} .. null.ne+(3,3) .. tension 1.5 .. symbol.e{down} .. null.w{right} dashed evenly;
334 halfdisc_e(symbol.e);
336 path array_simple_array_dashed;
337 pair array_simple_array_bifurcation, array_simple_array_common;
338 array_simple_array_dashed = array.e{down} .. simple_array.ne+(2,1) .. simple_array.e{down};
339 array_simple_array_bifurcation = directionpoint(10,1) of array_simple_array_dashed;
340 array_simple_array_common = directionpoint(1,-1) of array_simple_array_dashed;
342 drawarrow sequence.e{right} .. array.ne+(2,1) .. array.e{down} .. array_simple_array_common{dir angle(1,-1)} .. array_simple_array_bifurcation{dir angle(10,1)} .. simple_array.ne+(15,5) .. simple_array.se+(15,0) .. vector.e+(0,5){left} dashed evenly;
343 drawarrow sequence.e{right} .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(2,1) .. simple_array.e{down} .. simple_array.se+(2,-1) .. tension 2 .. vector.e + (0, -3){down} .. vector.se + (2,-1){down} .. simple_base_string.se+(5,0) .. simple_vector.e{left} dashed evenly;
344 drawarrow sequence.e{right} .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(2,1) .. simple_array.e{down} .. simple_array.se+(2,-1) .. tension 2 .. 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.ne+(-10,0){down} dashed evenly;
345 drawarrow sequence.e{right} .. array.ne+(2,1) .. array.e{down} .. simple_array.ne+(2,1) .. simple_array.e{down} .. simple_array.se+(2,-1) .. tension 2 .. 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;
347 halfdisc_e(simple_array.e);
348 halfdisc_e(vector.e+(0,-3));
349 halfdisc_e(string_.e);
350 halfdisc_e(simple_string.e);
351 halfdisc_e(base_string.e+(0,3));
352 halfdisc_e(bit_vector.e);
354 drawarrow array.w+(0,-3){left} ... array.sw+(-7,-3).. simple_array.w{right};
356 drawarrow character.e{right} .. extended_char.w{right};
357 drawarrow character.e{right} .. extended_char.sw+(-1,-3) .. base_char.w{right};
358 drawarrow base_char.e{right} .. standard_char.ne+(-7,0){down};
360 drawarrow function.s+(-20,0){down} ... compiled_function.w{right};
361 drawarrow function.s+(-20,0){down} ... generic_function.w{right};
362 drawarrow generic_function.e{right} ... standard_generic_function.ne+(-25,0){down};
364 drawarrow number.w{left} ... complex.n+(-10,0){down};
365 drawarrow number.w{left} ... real.n+(-12,0){down};
367 drawarrow real.w{left} ... double_float.nw+(-3,3) ... rational.w+(0,3){right};
368 drawarrow real.e{right} .. float.ne+(-5,0){down};
370 drawarrow float.se+(-5,0){down} ... short_float.e{left};
371 drawarrow float.se+(-5,0){down} ... single_float.e{left};
372 drawarrow float.se+(-5,0){down} ... double_float.e{left};
373 drawarrow float.se+(-5,0){down} ... long_float.e{left};
375 drawarrow rational.w+(0,-3){left} ... rational.sw+(-5,0) ... integer.w{right};
376 drawarrow rational.w+(0,-3){left} ... integer.w+(-10,0) ... ratio.w{right};
378 drawarrow (xpart fixnum.n, ypart.integer.s){down} .. signed_byte.ne+(-5,0){down};
379 drawarrow (xpart fixnum.n, ypart.integer.s){down} .. fixnum.n{down};
380 drawarrow (xpart fixnum.n, ypart integer.s){down} .. bignum.nw+(5,0){down};
382 drawarrow signed_byte.sw+(10,0){down} ... unsigned_byte.w{right};
383 drawarrow unsigned_byte.e{right} ... bit.w{right};
385 drawarrow stream.s{down} ... file_stream.e{left};
386 drawarrow stream.s{down} ... two_way_stream.e{left};
387 drawarrow stream.s{down} ... synonym_stream.e{left};
388 drawarrow stream.s{down} ... string_stream.e{left};
389 drawarrow stream.s{down} ... concatenated_stream.e{left};
390 drawarrow stream.s{down} ... broadcast_stream.e{left};
391 drawarrow stream.s{down} ... echo_stream.e{left};
393 drawarrow pathname.e{right} .. logical_pathname.ne+(-15,0){down};
395 drawarrow condition.e{right} .. condition.e+(95,0){right} .. (xpart warning.w, ypart condition.e){right};
396 drawarrow condition.e{right} .. condition.e+(95,0){right} .. simple_condition.n+(-15,0){down};
397 drawarrow condition.e{right} ... serious_condition.ne+(-10,0){down};
399 drawarrow (xpart warning.e, ypart condition.e){right} .. style_warning.ne+(-10,0){down};
401 drawarrow serious_condition.e{right} .. storage_condition.w{right};
402 drawarrow serious_condition.se+(-10,0){down} .. tension 1.3 .. error.w{right};
404 drawarrow error.sw+(5,0){down} ... parse_error.w{right};
405 drawarrow error.sw+(5,0){down} ... program_error.w{right};
406 drawarrow error.sw+(5,0){down} ... control_error.w{right};
407 drawarrow error.nw+(5,0){up} ... type_error.w{right};
408 drawarrow error.sw+(5,0){down} ... cell_error.w{right};
409 drawarrow error.sw+(5,0){down} ... stream_error.w{right};
410 drawarrow error.sw+(5,0){down} ... package_error.w{right};
411 drawarrow error.sw+(5,0){down} ... file_error.w{right};
412 drawarrow error.sw+(5,0){down} ... print_not_readable.w{right};
413 drawarrow error.sw+(5,0){down} ... arithmetic_error.nw+(5,0){down};
415 drawarrow stream_error.e{right} .. end_of_file.w{right};
417 drawarrow cell_error.e{right} .. undefined_function.w{right};
418 drawarrow cell_error.e{right} .. unbound_variable.w{right};
419 drawarrow cell_error.e{right} .. tension 1.3 .. unbound_variable.sw+(-3,-3) .. unbound_slot.w{right};
421 drawarrow arithmetic_error.sw+(5,0){down} ... division_by_zero.w{right};
422 drawarrow arithmetic_error.sw+(5,0){down} ... floating_point_inexact.w{right};
423 drawarrow arithmetic_error.sw+(5,0){down} ... floating_point_invalid_operation.w{right};
424 drawarrow arithmetic_error.sw+(5,0){down} ... floating_point_overflow.w{right};
425 drawarrow arithmetic_error.sw+(5,0){down} ... floating_point_underflow.w{right};
427 drawarrow stream_error.e{right} .. stream_error.se+(3,-2) .. parse_error.e{down} .. tension 1.5 .. reader_error.w{right} dashed evenly;
429 halfdisc_e(parse_error.e);
431 drawarrow (xpart warning.e, ypart condition.e){right} .. style_warning.ne+(3,0) .. tension 1.3 .. simple_condition.ne+(2,1) .. simple_condition.e{down} .. simple_condition.se+(2,-1) .. simple_warning.e{left} dashed evenly;
432 drawarrow error.e{right} .. tension 1.5 .. simple_condition.sw+(-1,-2) .. simple_condition.sw+(5,0){right} .. simple_condition.sw+(12,-2){right} ... simple_error.n{down} dashed evenly;
433 drawarrow type_error.e{right} .. simple_condition.nw+(-1,2) .. simple_condition.nw+(5,0){right} .. simple_type_error.e{left} dashed evenly;
435 halfdisc_e(simple_condition.e);
436 halfdisc_s(simple_condition.sw+(5,0));
437 halfdisc_n(simple_condition.nw+(5,0));