Implement balanced binary tree and refactor
[tiger.ml.git] / exercises / ch01 / tree.ml
index 04a7255..521b6cf 100644 (file)
@@ -1,35 +1,13 @@
-module Array = ArrayLabels
+module type S = sig
+  type ('k, 'v) t
 
-module Tree_vanilla  = Tree_unbalanced_vanilla
-module Tree_redblack = Tree_balanced_red_black
+  val empty : ('k, 'v) t
 
-let () =
-  let unbalanced = Tree_vanilla.empty in
-  let unbalanced = Tree_vanilla.set unbalanced ~k:"k1" ~v:"v1" in
-  let unbalanced = Tree_vanilla.set unbalanced ~k:"k2" ~v:"v2" in
-  assert (Tree_vanilla.member unbalanced ~k:"k1");
-  assert (Tree_vanilla.member unbalanced ~k:"k2");
-  assert (Some "v1" = Tree_vanilla.get unbalanced ~k:"k1");
-  assert (Some "v2" = Tree_vanilla.get unbalanced ~k:"k2");
+  val set : ('k, 'v) t -> k:'k -> v:'v -> ('k, 'v) t
 
-  let balanced = Tree_redblack.empty in
-  let balanced = Tree_redblack.set balanced ~k:"k1" ~v:"v1" in
-  let balanced = Tree_redblack.set balanced ~k:"k2" ~v:"v2" in
-  assert (Tree_redblack.member balanced ~k:"k1");
-  assert (Tree_redblack.member balanced ~k:"k2");
-  assert (Some "v1" = Tree_redblack.get balanced ~k:"k1");
-  assert (Some "v2" = Tree_redblack.get balanced ~k:"k2");
+  val get : ('k, 'v) t -> k:'k -> 'v option
 
-  (*let unbalanced =*)
-    (*Array.fold_left (Sys.argv)*)
-      (*~init:Tree_vanilla.empty*)
-      (*~f:(fun t k -> Tree_vanilla.set t ~k ~v:())*)
-  (*in*)
-  (*print_endline (Tree_vanilla.to_dot unbalanced ~k_to_string:(fun x -> x));*)
+  val member : ('k, 'v) t -> k:'k -> bool
 
-  let balanced =
-    Array.fold_left (Sys.argv)
-      ~init:Tree_redblack.empty
-      ~f:(fun t k -> Tree_redblack.set t ~k ~v:())
-  in
-  print_endline (Tree_redblack.to_dot balanced ~k_to_string:(fun x -> x))
+  val to_dot : ('k, 'v) t -> k_to_string:('k -> string) -> string
+end
This page took 0.017926 seconds and 4 git commands to generate.