28 lines
694 B
Plaintext
28 lines
694 B
Plaintext
MODE SET = FLEX[0]INT;
|
|
|
|
MODE F = PROC(INT)INT,
|
|
FS = PROC(SET)SET;
|
|
|
|
PROC fs = (F f, SET set)SET: (
|
|
[LWB set:UPB set]INT out;
|
|
FOR i FROM LWB set TO UPB set DO out[i]:=f(set[i]) OD;
|
|
out
|
|
);
|
|
|
|
PROC f1 = (INT value)INT: value * 2,
|
|
f2 = (INT value)INT: value ** 2;
|
|
|
|
FS fsf1 = fs(f1,),
|
|
fsf2 = fs(f2,);
|
|
|
|
[4]INT set;
|
|
FORMAT set fmt = $"("n(UPB set-LWB set)(g(0)", ")g(0)")"l$;
|
|
|
|
set := (0, 1, 2, 3);
|
|
printf((set fmt, fsf1((0, 1, 2, 3)))); # prints (0, 2, 4, 6) #
|
|
printf((set fmt, fsf2((0, 1, 2, 3)))); # prints (0, 1, 4, 9) #
|
|
|
|
set := (2, 4, 6, 8);
|
|
printf((set fmt, fsf1((2, 4, 6, 8)))); # prints (4, 8, 12, 16) #
|
|
printf((set fmt, fsf2((2, 4, 6, 8)))) # prints (4, 16, 36, 64) #
|