Właściwy sposób wykorzystania struktury danych w OCaml

Ok, napisałem abinary search tree w 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

Myślę, że powyższy kod nie ma problemów.

Kiedy z niego korzystam, piszę

let root = insert 4 Leaf

let root = insert 5 root

...

Czy to właściwy sposóbuse/insert do drzewa?

Chodzi mi o to, że nie powinienem deklarować roota i za każdym razem, gdy zmieniam wartość roota zmiennej, prawda?

Jeśli tak, w jaki sposób zawsze mogę zachować roota i wstawić wartość do drzewa w dowolnym momencie?

questionAnswers(1)

yourAnswerToTheQuestion