File: ref-flatten.5.sml

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (28 lines) | stat: -rw-r--r-- 647 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
datatype t =
   A of int ref * int
 | B

val n = 100

val a = Array.tabulate (n, fn i =>
                        case i mod 3 of
                           0 => B
                         | 1 => A (ref 13, 14)
                         | 2 => A (ref 15, 16))

datatype t =
   A' of int ref * int
 | B'

val a' =
   Array.tabulate (n, fn i =>
                   case Array.sub (a, i) of
                      B => B'
                    | A (r, n) => A' (r, n + 1))

val _ = Array.app (fn A (r, n) => r := 17 + n + !r  | B => ()) a

val _ =
   case Array.sub (a', 1) of
      A' (r, n) => print (concat [Int.toString (!r + n), "\n"])
    | B' => ()