| Branch(b1,i1,l1,r1), Branch(b2,i2,l2,r2) ->
b1 == b2 && i1 == i2 && (Node.equal l1 l2) && (Node.equal r1 r2)
| Branch(b1,i1,l1,r1), Branch(b2,i2,l2,r2) ->
b1 == b2 && i1 == i2 && (Node.equal l1 l2) && (Node.equal r1 r2)
- (*
- external clz : int -> int = "caml_clz" "noalloc"
- external leading_bit : int -> int = "caml_leading_bit" "noalloc"
- *)
+ (*
+ external clz : int -> int = "caml_clz" "noalloc"
+ external leading_bit : int -> int = "caml_leading_bit" "noalloc"
+ *)
let equal a b = Node.equal a b
let compare a b = (Uid.to_int (Node.uid a)) - (Uid.to_int (Node.uid b))
let rec merge s t =
let equal a b = Node.equal a b
let compare a b = (Uid.to_int (Node.uid a)) - (Uid.to_int (Node.uid b))
let rec merge s t =
| Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) ->
if m1 == m2 && p1 == p2 then
intersect l1 l2 || intersect r1 r2
| Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) ->
if m1 == m2 && p1 == p2 then
intersect l1 l2 || intersect r1 r2