Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
|
|
@ -0,0 +1,54 @@
|
|||
MODULE Callback;
|
||||
IMPORT StdLog;
|
||||
|
||||
TYPE
|
||||
Callback = PROCEDURE (x: INTEGER;OUT doubled: INTEGER);
|
||||
Callback2 = PROCEDURE (x: INTEGER): INTEGER;
|
||||
|
||||
PROCEDURE Apply(proc: Callback; VAR x: ARRAY OF INTEGER);
|
||||
VAR
|
||||
i: INTEGER;
|
||||
BEGIN
|
||||
FOR i := 0 TO LEN(x) - 1 DO;
|
||||
proc(x[i],x[i]);
|
||||
END
|
||||
END Apply;
|
||||
|
||||
PROCEDURE Apply2(func: Callback2; VAR x: ARRAY OF INTEGER);
|
||||
VAR
|
||||
i: INTEGER;
|
||||
BEGIN
|
||||
FOR i := 0 TO LEN(x) - 1 DO;
|
||||
x[i] := func(x[i]);
|
||||
END
|
||||
END Apply2;
|
||||
|
||||
PROCEDURE Double(x: INTEGER; OUT y: INTEGER);
|
||||
BEGIN
|
||||
y := x * x;
|
||||
END Double;
|
||||
|
||||
PROCEDURE Double2(x: INTEGER): INTEGER;
|
||||
BEGIN
|
||||
RETURN x * x
|
||||
END Double2;
|
||||
|
||||
PROCEDURE Do*;
|
||||
VAR
|
||||
i: INTEGER;
|
||||
ary: ARRAY 10 OF INTEGER;
|
||||
|
||||
|
||||
BEGIN
|
||||
FOR i := 0 TO LEN(ary) - 1 DO ary[i] := i END;
|
||||
Apply(Double,ary);
|
||||
FOR i := 0 TO LEN(ary) - 1 DO
|
||||
StdLog.Int(ary[i]);StdLog.Ln
|
||||
END;
|
||||
StdLog.Ln;
|
||||
Apply2(Double2,ary);
|
||||
FOR i := 0 TO LEN(ary) - 1 DO
|
||||
StdLog.Int(ary[i]);StdLog.Ln
|
||||
END
|
||||
END Do;
|
||||
END Callback.
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
#define std'patterns'*.
|
||||
#define std'routines'*.
|
||||
#define std'dictionary'*.
|
||||
#define system.
|
||||
|
||||
#symbol PrintSquarePower: aNumber
|
||||
= 'program'output << aNumber * aNumber << "%n".
|
||||
#symbol PrintSecondPower =
|
||||
&&:n [ console writeLine:(n * n) ].
|
||||
|
||||
#symbol Program =
|
||||
#symbol program =
|
||||
[
|
||||
Scan::(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) run:(#symbol PrintSquarePower).
|
||||
#var anArray := (1, 2, 3, 4, 5, 6, 7, 8, 9, 10).
|
||||
|
||||
control foreach:anArray &do:PrintSecondPower.
|
||||
].
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
def seg = array[1, 2, 3, 5, 8, 13];
|
||||
def squares = seq.Map(x => x*x);
|
||||
Loading…
Add table
Add a link
Reference in a new issue