65 lines
965 B
Plaintext
65 lines
965 B
Plaintext
// http://www.ats-lang.org/
|
|
(* Say Hello! once *)
|
|
val () = print"Hello!\n"
|
|
//
|
|
(* Say Hello! 3 times *)
|
|
val () = 3*delay(print"Hello!")
|
|
val () = print_newline((*void*))
|
|
//
|
|
|
|
//
|
|
(* Build a list of 3 *)
|
|
val xs = $list{int}(0, 1, 2)
|
|
//
|
|
val x0 = xs[0] // legal
|
|
val x1 = xs[1] // legal
|
|
val x2 = xs[2] // legal
|
|
val x3 = xs[3] // illegal
|
|
//
|
|
|
|
//
|
|
extern
|
|
fun{} f0 (): int
|
|
extern
|
|
fun{} f1 (int): int
|
|
extern
|
|
fun{} repeat_f0f1 (int): int
|
|
//
|
|
implement
|
|
{}(*tmp*)
|
|
repeat_f0f1(n) =
|
|
if n = 0
|
|
then f0()
|
|
else f1(repeat_f0f1(n-1))
|
|
// end of [if]
|
|
//
|
|
fun
|
|
times (
|
|
m:int, n:int
|
|
) : int = // m*n
|
|
repeat_f0f1 (m) where
|
|
{
|
|
implement f0<> () = 0
|
|
implement f1<> (x) = x + n
|
|
}
|
|
//
|
|
fun
|
|
power (
|
|
m:int, n:int
|
|
) : int = // m^n
|
|
repeat_f0f1 (n) where
|
|
{
|
|
implement f0<> () = 1
|
|
implement f1<> (x) = m * x
|
|
}
|
|
//
|
|
val () =
|
|
println! ("5*5 = ", times(5,5))
|
|
val () =
|
|
println! ("5^2 = ", power(5,2))
|
|
val () =
|
|
println! ("2^10 = ", power(2,10))
|
|
val () =
|
|
println! ("3^10 = ", power(3,10))
|
|
//
|