File: array5.sml

package info (click to toggle)
mlton 20130715-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 60,900 kB
  • ctags: 69,386
  • sloc: xml: 34,418; ansic: 17,399; lisp: 2,879; makefile: 1,605; sh: 1,254; pascal: 256; python: 143; asm: 97
file content (46 lines) | stat: -rw-r--r-- 1,116 bytes parent folder | download | duplicates (7)
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
open Array2

fun printa a =
   let val (rows, cols) = dimensions a
      fun loopRows r =
         if r = rows
            then ()
         else (let
                  fun loopCols c =
                     if c = cols
                        then ()
                     else (print(Int.toString(sub(a, r, c))) ;
                           print " " ;
                           loopCols(c + 1))
               in loopCols 0
               end;
               print "\n";
               loopRows(r + 1))
   in loopRows 0
   end

val a1 = array(4, 5, 13)
val _ = (printa a1;
         modifyi RowMajor (fn (x, y, _) => x + y)
         {base = a1, row = 0, col = 0, nrows = NONE, ncols = NONE};
         printa a1)

val a2 = fromList[[1, 2], [3, 4], [5, 6]]
val _ = printa a2

fun bogus l = (fromList l; false) handle Size => true

val _ = (bogus[[1], [2, 3]];
         bogus[[], [1]])
   
val a3 =
   let val r = ref 0
   in tabulate RowMajor (3, 3, fn _ => (r := !r + 1 ; !r))
   end
val _ = printa a3

val a4 =
   let val r = ref 0
   in tabulate ColMajor (3, 3, fn _ => (r := !r + 1 ; !r))
   end
val _ = printa a4