Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | datatype t = |
2 | A of int ref * int | |
3 | | B | |
4 | ||
5 | val n = 100 | |
6 | ||
7 | val a = Array.tabulate (n, fn i => | |
8 | case i mod 3 of | |
9 | 0 => B | |
10 | | 1 => A (ref 13, 14) | |
11 | | 2 => A (ref 15, 16)) | |
12 | ||
13 | datatype t = | |
14 | A' of int ref * int | |
15 | | B' | |
16 | ||
17 | val a' = | |
18 | Array.tabulate (n, fn i => | |
19 | case Array.sub (a, i) of | |
20 | B => B' | |
21 | | A (r, n) => A' (r, n + 1)) | |
22 | ||
23 | val _ = Array.app (fn A (r, n) => r := 17 + n + !r | B => ()) a | |
24 | ||
25 | val _ = | |
26 | case Array.sub (a', 1) of | |
27 | A' (r, n) => print (concat [Int.toString (!r + n), "\n"]) | |
28 | | B' => () |