(* ** ** Course: Concepts of Programming Languages (BU CAS CS 320) ** Semester: Summer I, 2009 ** ** Instructor: Hongwei Xi (hwxi AT cs DOT bu DOT edu) ** *) (* ****** ****** *) %{^ /* int gcd (int m, int n) { int r ; while (n != 0) { r = m % n; m = n; n = r; } return m ; } */ /* int gcd (int m, int n) { return (n != 0 ? gcd (n, m % n) : m) ; } */ %} (* ****** ****** *) extern fun gcd (m: int, n: int): int implement gcd (m, n) = if n <> 0 then gcd (n, m mod n) else m // end of [gcd] (* ****** ****** *) implement main (argc, argv) = let val () = assert (argc >= 3) val m = int_of_string (argv.[1]) val n = int_of_string (argv.[2]) in printf ("gcd (%i, %i) = %i\n", @(m, n, gcd (m, n))) end // end of [main] (* ****** ****** *) (* end of [lecture01_gcd.dats] *)