X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=blobdiff_plain;f=exercises%2Fch01%2Ftree.ml;h=521b6cfa3934dbc44734fef881a97101f2fea203;hp=04a7255a20b30207c7eae8ac6dd737aff60c4568;hb=958f72687df932030c5dfafc7066889982497729;hpb=88cc262a0a05de03560b35950b763f41717b79b1 diff --git a/exercises/ch01/tree.ml b/exercises/ch01/tree.ml index 04a7255..521b6cf 100644 --- a/exercises/ch01/tree.ml +++ b/exercises/ch01/tree.ml @@ -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