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