O caminho certo para usar uma estrutura de dados no OCaml

Ok, eu escrevi umbinary search tree no 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

Eu acho que o código acima não tem problemas.

Ao usá-lo, escrevo

let root = insert 4 Leaf

let root = insert 5 root

...

É este o caminho correto parause/insert para a árvore?

Quer dizer, eu acho que não devo declarar a raiz e toda vez que eu mudar novamente o valor da raiz da variável, certo?

Se sim, como posso sempre manter uma raiz e inserir um valor na árvore a qualquer momento?

questionAnswers(1)

yourAnswerToTheQuestion