Правильный способ использования структуры данных в OCaml

Хорошо, я написалbinary search tree в 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

Я думаю, у приведенного выше кода нет проблем.

При его использовании пишу

let root = insert 4 Leaf

let root = insert 5 root

...

Это правильный способuse/insert к дереву?

Я имею в виду, я не должен объявлять корень, и каждый раз, когда я снова меняю значение переменной root, верно?

Если так, как я могу всегда сохранять корень и в любое время вставить значение в дерево?

Ответы на вопрос(1)

Ваш ответ на вопрос