Here's just a small translation of the ats examples[0] page.
-----------------
Copying File
----------------
Authors version:
fun
fcopy (
inp: FILEref
, out: FILEref
) : void = let
val c = fileref_getc (inp)
in
if c >= 0 then let
val () = fileref_putc (out, c) in fcopy (inp, out)
end // end of [if]
end (* end of [fcopy] *)
fun fcopy (
inp: FILEref,
out: FILEref
) : void = let
val c = fileref_getc (inp)
in
if c >= 0 then let
val () = fileref_putc (out, c) in fcopy (inp, out)
end
end
Authors version:
fun
fib (
n: int
) : int =
if n >= 2 then fib (n-2) + fib (n-1) else n
My Version (not sure if valid!):
fun fib ( n: int ) :
int = if n >= 2 then fib (n-2) + fib (n-1) else n
-----------------
Fast Fibonacci
----------------
Authors Version:
fun
fibc (
n: int
) : int = let
fun loop (n: int, f0: int, f1: int) =
if n > 0 then loop (n-1, f1, f0+f1) else f0
// end of [loop]
in
loop (n, 0, 1)
end // end of [fibc]
My Version:
fun fibc ( n: int ) : int =
let
fun loop (n: int, f0: int, f1: int) =
if n > 0 then loop (n-1, f1, f0+f1) else f0
in
loop (n, 0, 1)
end
----------------- Copying File ----------------
Authors version:
----------------- Naieve Fibonacci ----------------My version:
Authors version: My Version (not sure if valid!): ----------------- Fast Fibonacci ----------------Authors Version:
My Version: 0: http://www.ats-lang.org/Examples.html