+ let rec set t ~k ~v =
+ match t with
+ | Leaf -> Node (k, v, Leaf, Leaf)
+ | Node (k', v', l, r) when k < k' -> Node (k', v', set l ~k ~v, r)
+ | Node (k', v', l, r) when k > k' -> Node (k', v', l, set r ~k ~v)
+ | Node (k, _, l, r) -> Node (k, v, l, r)
+
+ let rec get t ~k =