Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / regression / kitloop2.sml
CommitLineData
7f918cf1
CE
1(*kitloop2.sml*)
2
3(* A tail-recursive loop which gives stack overflow, unless one
4 uses storage mode analsysis *)
5
6val x =
7let
8 val N = 500
9 val I = 1000
10
11 type int_pair = int * int
12 val maxint = 2000
13 val zero = (0,0)
14 fun is_zero(0,0) = true
15 | is_zero _ = false
16
17 fun sub (m,n) =
18 if n=0 then (m-1, maxint)
19 else (m, n-1)
20
21 fun loop (x as (m,n)) =
22 if is_zero x then x
23 else loop(sub x)
24
25 fun loop' p = (loop p; "\ndone\n")
26
27in
28 print "\nlooping...\n";
29 print (loop'(maxint,maxint))
30end