1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
implement Lists;
include "sys.m";
include "draw.m";
sys: Sys;
print: import sys;
Lists: module {
init: fn(nil: ref Draw->Context, nil: list of string);
};
init(nil: ref Draw->Context, nil: list of string) {
sys = load Sys Sys->PATH;
names: list of string;
ages: list of int;
persons: list of (string, int);
print("Lens: %d, %d, %d\n", len names, len ages, len persons);
names = "Spike" :: names;
ages = 27 :: ages;
names = "Ed" :: "Jet" :: names;
ages = 13 :: 36 :: ages;
print("Lens: %d, %d, %d\n", len names, len ages, len persons);
n := names;
a := ages;
while(n != nil && a != nil) {
persons = (hd n, hd a) :: persons;
n = tl n;
a = tl a;
}
print("Persons:\n");
for(; persons != nil; persons = tl persons) {
(name, age) := hd persons;
print("%s: %d\n", name, age);
}
print("Tmp lens: %d, %d\n", len n, len a);
print("Lens: %d, %d, %d\n", len names, len ages, len persons);
exit;
}
|