From e679c071e6c9e451e926ccbf03fb74642440a199 Mon Sep 17 00:00:00 2001 From: ubsan Date: Sun, 17 Sep 2017 16:14:27 -0700 Subject: [PATCH] add ocaml to euclidean --- .../euclidean_algorithm/euclidean.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/chapters/fundamental_algorithms/euclidean_algorithm/euclidean.md b/chapters/fundamental_algorithms/euclidean_algorithm/euclidean.md index 722a31619..2ffdd1282 100644 --- a/chapters/fundamental_algorithms/euclidean_algorithm/euclidean.md +++ b/chapters/fundamental_algorithms/euclidean_algorithm/euclidean.md @@ -331,3 +331,26 @@ fn main() { println!("{}", chk2); } ``` + +### OCaml + +```ocaml +let rec euclid_mod a b = + if b = 0 then + a + else + euclid_mod b (a mod b) + +let rec euclid_sub a b = + if a = b then + a + else if a < b then + euclid_sub a (b - a) + else + euclid_sub (a - b) b + +let chk1 = euclid_mod (64 * 67) (64 * 81) +let chk2 = euclid_sub (128 * 12) (128 * 77) +let () = print_string ((int_of_string chk1) ^ "\n") +let () = print_string ((int_of_string chk2) ^ "\n") +```