Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / ref-flatten.5.sml
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' => ()