- match s.node,t.node with
- | Empty, _ -> t
- | _, Empty -> s
- | Leaf k, _ -> add k t
- | _, Leaf k -> add k s
- | Branch (p,m,s0,s1), Branch (q,n,t0,t1) ->
- if m == n && match_prefix q p m then
- branch (p, m, merge (s0,t0), merge (s1,t1))
- else if m > n && match_prefix q p m then
- if zero_bit q m then
- branch (p, m, merge (s0,t), s1)
- else
- branch (p, m, s0, merge (s1,t))
- else if m < n && match_prefix p q n then
-
- if zero_bit p n then
- branch (q, n, merge (s,t0), t1)
- else
- branch (q, n, t0, merge (s,t1))
+ match HNode.node s, HNode.node t with
+ | Empty, _ -> t
+ | _, Empty -> s
+ | Leaf k, _ -> add k t
+ | _, Leaf k -> add k s
+ | Branch (p,m,s0,s1), Branch (q,n,t0,t1) ->
+ if m == n && match_prefix q p m then
+ branch p m (merge s0 t0) (merge s1 t1)
+ else if m > n && match_prefix q p m then
+ if zero_bit q m then
+ branch p m (merge s0 t) s1
+ else
+ branch p m s0 (merge s1 t)
+ else if m < n && match_prefix p q n then
+ if zero_bit p n then
+ branch q n (merge s t0) t1