29 lines
536 B
Text
29 lines
536 B
Text
MODULE Main;
|
|
IMPORT IO;
|
|
|
|
TYPE Function = PROCEDURE ():INTEGER;
|
|
|
|
PROCEDURE A(k: INTEGER; x1, x2, x3, x4, x5: Function): INTEGER =
|
|
|
|
PROCEDURE B(): INTEGER =
|
|
BEGIN
|
|
DEC(k);
|
|
RETURN A(k, B, x1, x2, x3, x4);
|
|
END B;
|
|
|
|
BEGIN
|
|
IF k <= 0 THEN
|
|
RETURN x4() + x5();
|
|
ELSE
|
|
RETURN B();
|
|
END;
|
|
END A;
|
|
|
|
PROCEDURE F0(): INTEGER = BEGIN RETURN 0; END F0;
|
|
PROCEDURE F1(): INTEGER = BEGIN RETURN 1; END F1;
|
|
PROCEDURE Fn1(): INTEGER = BEGIN RETURN -1; END Fn1;
|
|
|
|
BEGIN
|
|
IO.PutInt(A(10, F1, Fn1, Fn1, F1, F0));
|
|
IO.Put("\n");
|
|
END Main.
|