RosettaCodeData/Task/Apply-a-callback-to-an-array/Zonnon/apply-a-callback-to-an-array.zonnon
2023-07-01 13:44:08 -04:00

39 lines
542 B
Text

module Main;
type
Callback = procedure (integer): integer;
Vector = array {math} * of integer;
procedure Power(i:integer):integer;
begin
return i*i;
end Power;
procedure Map(x: Vector;p: Callback): Vector;
var
i: integer;
r: Vector;
begin
r := new Vector(len(x));
for i := 0 to len(x) - 1 do
r[i] := p(i);
end;
return r
end Map;
procedure Write(x: Vector);
var
i: integer;
begin
for i := 0 to len(x) - 1 do
write(x[i]:4)
end;
writeln
end Write;
var
x,y: Vector;
begin
x := [1,2,3,4,5];
Write(Map(x,Power))
end Main.