Implement balanced binary tree and refactor
[tiger.ml.git] / exercises / ch01 / tree_demo.ml
1 module Array = ArrayLabels
2
3 let () =
4 let (module T : Tree.S) =
5 match Sys.argv.(1) with
6 | "balanced" -> (module Tree_balanced_red_black : Tree.S)
7 | "unbalanced" -> (module Tree_unbalanced_vanilla : Tree.S)
8 | other ->
9 failwith ("Expected: \"balanced\" | \"unbalanced\". Got: " ^ other)
10 in
11
12 let t = T.empty in
13 let t = T.set t ~k:"k1" ~v:"v1" in
14 let t = T.set t ~k:"k2" ~v:"v2" in
15 assert (T.member t ~k:"k1");
16 assert (T.member t ~k:"k2");
17 assert (Some "v1" = T.get t ~k:"k1");
18 assert (Some "v2" = T.get t ~k:"k2");
19 Sys.argv
20 |> Array.sub ~pos:2 ~len:((Array.length Sys.argv) - 2)
21 |> Array.fold_left ~init:T.empty ~f:(fun t k -> T.set t ~k ~v:())
22 |> T.to_dot ~k_to_string:(fun x -> x)
23 |> print_endline
This page took 0.085231 seconds and 4 git commands to generate.