MODULE Main; FROM Test IMPORT done; IMPORT Wr, Rd, Stdio; PROCEDURE FinAffiche () = BEGIN Wr.PutChar (Stdio.stdout, CHAR.NL) END FinAffiche; PROCEDURE Foo (AfficheReste: PROCEDURE ()): BOOLEAN = VAR c: CHAR; PROCEDURE Affiche () = BEGIN Wr.PutChar (Stdio.stdout, c); AfficheReste () END Affiche; BEGIN TRY c := Rd.GetChar (Stdio.stdin); EXCEPT | Rd.EndOfFile => IF AfficheReste # FinAffiche THEN AfficheReste (); END; RETURN (FALSE); END; IF c = CHAR.NL THEN AfficheReste (); ELSE EVAL Foo (Affiche); END; RETURN (TRUE); END Foo; BEGIN WHILE Foo (FinAffiche) DO END; done (); END Main.