Call a function: Difference between revisions

no edit summary
No edit summary
Line 3,911:
a:=5; f('wrap(b){a+b}) // 'wrap is syntactic sugar for .fpN
// to create a lexical closure --> f(fcn(b,a){a+b}.fpN(1,a))</lang>
 
=={{header|zonnon}}==
<lang zonnon>
module CallingProcs;
type
{public} Vector = array {math} * of integer;
 
var
nums: array {math} 4 of integer;
ints: Vector;
total: integer;
 
procedure Init(): boolean; (* private by default *)
begin
nums := [1,2,3,4];
ints := new Vector(5);
ints := [2,4,6,8,10];
return true;
end Init;
 
(* function *)
procedure Sum(v: Vector): integer;
var
i,s: integer;
begin
s := 0;
for i := 0 to len(v) - 1 do
(* inc is a predefined subroutine *)
inc(s,v[i])
end;
return s
end Sum;
 
(* subroutine
* @param v: by value
* @param t: by reference
*)
procedure Sum2(v: array {math} * of integer; var t: integer);
var
i: integer;
begin
t := 0;
for i := 0 to len(v) - 1 do
inc(t,v[i])
end
end Sum2;
begin
Init; (* calling a function without parameters *)
total := Sum(nums);
writeln(total);
(* optional arguments not supported *)
(* variable arguments through open arrays *)
writeln(Sum(ints));
(* named arguments not supported *)
ints := [1,3,5,7,9];
Sum2(ints,total);
writeln(total);
end CallingProcs.
</lang>
 
=={{header|ZX Spectrum Basic}}==
Anonymous user