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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
implement Arrays;
include "sys.m";
include "draw.m";
sys: Sys;
print: import sys;
Arrays: module {
init: fn(nil: ref Draw->Context, nil: list of string);
};
nums: array of int;
width: int = 6;
init(nil: ref Draw->Context, nil: list of string) {
sys = load Sys Sys->PATH;
# Nums
print("Len nums: %d\n", len nums);
nums = array[width] of int;
print("Len nums: %d\n", len nums);
print("[");
for(i := 0; i < width; i++)
print(" %d", nums[i] = i << 1);
print("]\n\n");
# Arr
arr := array[12] of byte;
arrstr := "baby ducks!!";
for(i = 0; i < len arrstr; i++)
arr[i] = byte arrstr[i];
print("Len arr: %d\n", len arr);
print("[");
for(i = 0; i < len arr; i++)
print(" %c", int arr[i]);
print("]\n\n");
# Dbl
dbl := array[len arr *2] of byte;
for(i = 0; i < len arr; i++)
dbl[i*2] = dbl[i*2+1] = arr[i];
print("Len dbl: %d\n", len dbl);
print("[");
for(i = 0; i < len dbl; i++)
print(" %c", int dbl[i]);
print("]\n\n");
# Chars
chars := array[] of {"a", "b", "c", "d", "e", "f"};
print("Len chars: %d\n", len chars);
print("[");
for(i = 0; i < len chars; i++)
print(" %s", chars[i]);
print("]\n\n");
# Nest
nest: array of array of string;
print("Len nest: %d\n", len nest);
nest = array[4] of array of string;
print("Len nest: %d\n", len nest);
for(i = 0; i < len nest; i++)
nest[i] = array[2 << i] of string;
print("Lens: [");
for(i = 0; i < len nest; i++)
print(" %d", len nest[i]);
print("]\n\n");
# Buf
buf := array[10] of {* => byte 3};
print("Len buf: %d\n", len buf);
print("[");
for(i = 0; i < len buf; i++)
print(" %d", int buf[i]);
print("]\n\n");
# Two
two := array[4] of list of (string, string);
#two = array[4] of list of (string, string);
two[0] = ("ducks", "quack") :: two[0];
two[2] = ("inferno", "os") :: two[2];
print("Len two: %d\n", len two);
print("Lens: [");
for(i = 0; i < len two; i++)
print(" %d", len two[i]);
print("]\n");
print("[");
for(i = 0; i < len two; i++) {
if(two[i] == nil) {
print(" (nil, nil)");
continue;
}
(s0, s1) := hd two[i];
print(" (%s %s)", s0, s1);
}
print("]\n");
exit;
}
|