The correct way to build a Binary Search Tree in OCaml
Ok, I have written a binary search tree in OCaml. type 'a bstree = |Node of 'a * 'a bstree * 'a bstree |Leaf let rec insert x = function |Leaf -> Node (x, Leaf, Leaf) |Node (y, left, right) as node -> if x < y then Node (y, insert x left, right) else if x > y then Node (y, left, insert x right) else node The above code was said to be good in The right way to use a data structure in OCaml However, I found a problem. This insert will only work when building a bst from a list in one go, such as let rec set_of_list = function [] > empty | x :: l > insert x (set_of_list l);; So if we build a bst