// Some simple programs in ATS // Hongwei Xi (Oct 12, 2005) staload "ATS/stdio.sats" // typedef Nat = [n:int | n > 0] int (n) fun fact {n:nat} .. (n: int n): Nat = if n igt 0 then n nmul fact (n isub 1) else 1 val _ = begin print_string "The value of fact(10) = "; print_int (fact 10); print_newline () end fun ack {m:nat, n:nat} .. (m: int m, n: int n): Nat = if m igt 0 then if n igt 0 then ack (ipred m, ack (m, ipred n)) else ack (ipred m, 1) else isucc n val _ = begin print_string "The value of ack(3, 5) = "; print_int (ack (3, 5)); print_newline () end