| 123456789101112131415161718192021222324 |
- MODULE TProcType;
- // Procedure types: alias, procedure-typed variable, assignment of a
- // procedure name, and indirect call. Both the named parameter form
- // (a, b : INTEGER) and the type-only shorthand (INTEGER) are used.
- // Exit 42.
- TYPE BinOp = PROCEDURE (a, b : INTEGER) : INTEGER;
- TYPE UnOp = PROCEDURE (INTEGER) : INTEGER;
- VAR ExitCode : INTEGER;
- VAR f : BinOp;
- VAR g : UnOp;
- PROCEDURE Add (a, b : INTEGER) : INTEGER;
- BEGIN RETURN a + b END Add;
- PROCEDURE Neg (x : INTEGER) : INTEGER;
- BEGIN RETURN -x END Neg;
- BEGIN
- f := Add;
- ExitCode := f(40, 2); // 42
- g := Neg;
- ExitCode := ExitCode + g(-5) - 5 // 42 + 5 - 5 = 42
- END TProcType.
|