Apply a callback to an array: Difference between revisions

Modula-3
m (<lang>)
(Modula-3)
Line 683:
=1 4 9 16
</lang>
 
=={{header|Modula-3}}==
<lang modula3>MODULE Callback EXPORTS Main;
 
IMPORT IO, Fmt;
 
TYPE CallBack = PROCEDURE (a: CARDINAL; b: INTEGER);
Values = REF ARRAY OF INTEGER;
 
VAR sample := ARRAY [1..5] OF INTEGER {5, 4, 3, 2, 1};
callback := Display;
 
PROCEDURE Display(loc: CARDINAL; val: INTEGER) =
BEGIN
IO.Put("array[" & Fmt.Int(loc) & "] = " & Fmt.Int(val * val) & "\n");
END Display;
 
PROCEDURE Map(VAR values: ARRAY OF INTEGER; size: CARDINAL; worker: CallBack) =
VAR lvalues := NEW(Values, size);
BEGIN
FOR i := FIRST(lvalues^) TO LAST(lvalues^) DO
worker(i, values[i]);
END;
END Map;
 
BEGIN
Map(sample, NUMBER(sample), callback);
END Callback.</lang>
 
=={{header|OCaml}}==
Anonymous user