(* The Great Win32 Language Shootout http://dada.perl.it/shootout/ contributed by Isaac Gouy (Modula2 novice) To build: xc =m ackermann To run: ackermann 8 *) MODULE Ackermann; (* Prefer unqualified procedure import *) FROM LanguageShootout IMPORT N; FROM STextIO IMPORT WriteString, WriteLn; FROM SWholeIO IMPORT WriteCard; PROCEDURE Ack (m, n: CARDINAL) : CARDINAL; BEGIN IF m=0 THEN RETURN n+1; END; IF n=0 THEN RETURN Ack(m-1, 1); END; RETURN Ack(m-1, Ack(m, n-1)); END Ack; VAR n: CARDINAL; BEGIN n := N(); WriteString("Ack(3," ); WriteCard(n,1); WriteString("): "); WriteCard( Ack(3,n), 1); WriteLn; END Ackermann.