Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / regression / ref-flatten.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 val a' =
14 Array.tabulate (n, fn i =>
15 case Array.sub (a, i) of
16 B => B
17 | A (r, n) => A (r, n + 1))
18
19 val _ = Array.app (fn A (r, n) => r := 17 + n + !r | B => ()) a
20
21 val _ =
22 case Array.sub (a', 1) of
23 A (r, _) => print (concat [Int.toString (!r), "\n"])
24 | B => ()