Implement balanced binary tree and refactor
[tiger.ml.git] / exercises / ch01 / tree_demo.ml
diff --git a/exercises/ch01/tree_demo.ml b/exercises/ch01/tree_demo.ml
new file mode 100644 (file)
index 0000000..1d8ec9f
--- /dev/null
@@ -0,0 +1,23 @@
+module Array = ArrayLabels
+
+let () =
+  let (module T : Tree.S) =
+    match Sys.argv.(1) with
+    | "balanced"   -> (module Tree_balanced_red_black : Tree.S)
+    | "unbalanced" -> (module Tree_unbalanced_vanilla : Tree.S)
+    | other ->
+        failwith ("Expected: \"balanced\" | \"unbalanced\". Got: " ^ other)
+  in
+
+  let t = T.empty in
+  let t = T.set t ~k:"k1" ~v:"v1" in
+  let t = T.set t ~k:"k2" ~v:"v2" in
+  assert (T.member t ~k:"k1");
+  assert (T.member t ~k:"k2");
+  assert (Some "v1" = T.get t ~k:"k1");
+  assert (Some "v2" = T.get t ~k:"k2");
+  Sys.argv
+  |> Array.sub ~pos:2 ~len:((Array.length Sys.argv) - 2)
+  |> Array.fold_left ~init:T.empty ~f:(fun t k -> T.set t ~k ~v:())
+  |> T.to_dot ~k_to_string:(fun x -> x)
+  |> print_endline
This page took 0.023193 seconds and 4 git commands to generate.