This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -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.

View file

@ -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.
].

View file

@ -0,0 +1,2 @@
def seg = array[1, 2, 3, 5, 8, 13];
def squares = seq.Map(x => x*x);