Backport from sid to buster
[hcoop/debian/mlton.git] / regression / ref-flatten.5.sml
CommitLineData
7f918cf1
CE
1datatype t =
2 A of int ref * int
3 | B
4
5val n = 100
6
7val 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
13datatype t =
14 A' of int ref * int
15 | B'
16
17val 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
23val _ = Array.app (fn A (r, n) => r := 17 + n + !r | B => ()) a
24
25val _ =
26 case Array.sub (a', 1) of
27 A' (r, n) => print (concat [Int.toString (!r + n), "\n"])
28 | B' => ()