Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / array5.sml
1 open Array2
2
3 fun printa a =
4 let val (rows, cols) = dimensions a
5 fun loopRows r =
6 if r = rows
7 then ()
8 else (let
9 fun loopCols c =
10 if c = cols
11 then ()
12 else (print(Int.toString(sub(a, r, c))) ;
13 print " " ;
14 loopCols(c + 1))
15 in loopCols 0
16 end;
17 print "\n";
18 loopRows(r + 1))
19 in loopRows 0
20 end
21
22 val a1 = array(4, 5, 13)
23 val _ = (printa a1;
24 modifyi RowMajor (fn (x, y, _) => x + y)
25 {base = a1, row = 0, col = 0, nrows = NONE, ncols = NONE};
26 printa a1)
27
28 val a2 = fromList[[1, 2], [3, 4], [5, 6]]
29 val _ = printa a2
30
31 fun bogus l = (fromList l; false) handle Size => true
32
33 val _ = (bogus[[1], [2, 3]];
34 bogus[[], [1]])
35
36 val a3 =
37 let val r = ref 0
38 in tabulate RowMajor (3, 3, fn _ => (r := !r + 1 ; !r))
39 end
40 val _ = printa a3
41
42 val a4 =
43 let val r = ref 0
44 in tabulate ColMajor (3, 3, fn _ => (r := !r + 1 ; !r))
45 end
46 val _ = printa a4