RosettaCodeData/Task/Man-or-boy-test/Modula-3/man-or-boy-test.mod3
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

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.