Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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] *)
----------------- Naieve Fibonacci ----------------

My 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 
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
0: http://www.ats-lang.org/Examples.html


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: