In article <10*************@corp.supernews.com> Derk Gwen <de******@HotPOP.com> writes:
# While the Algol 60 part is correct, the C mechanism is quite a bit more
# than just a jump to another, calling procedure. It is intended to trap
# all kinds of error conditions, something Algol 60 could not.
procedure A; begin
switch AX := X;
procedure B(eexit); switch eexit; begin
C(eexit);
Nowhere in this example the trapping of error conditions is present.
So I do not understand the purpose. [ Remainder snipped.]
# Nesting of procedures and jumping out of inner procedures is something
# different from trapping on error conditions.
CAR Hoare "Here is a language so far ahead of its time, that it was not
only an improvement on its predecessors, but also on nearly all its
successors."
Except that you could not trap on error conditions. Moreover, there
were strange constructs like Jensen's device and:
"begin"
"procedure" B(x, b); "Boolean" b;
"begin"
"if" b "then" "goto" b "else" z := z + b;
"end";
"integer" z;
z := 0;
B(5, "false");
B(5, "true");
B(5, "false");
5:
"end"
where a procedure acts more like a macro than like a real procedure.
(And, yes, I know of at least one compiler that did this correct.
Most compilers did not allow it.)
--
dik t. winter, cwi, kruislaan 413, 1098 sj amsterdam, nederland, +31205924131
home: bovenover 215, 1025 jn amsterdam, nederland;
http://www.cwi.nl/~dik/