]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/union.ml
debian release -3
[helm.git] / helm / ocaml / mathql_interpreter / union.ml
index 65f73503be9ce5c3b9b5743e9e785c2c12ce9f23..c8e46cd0b8ee991c8f324c6b99b4464f67514d0f 100644 (file)
@@ -114,13 +114,16 @@ let rec union_ex l1 l2 =
      [],l
    | l,[] -> l
    | ({S.uri = uri1} as entry1)::tl1,
-     ({S.uri = uri2} as entry2)::_ when uri1 < uri2 || entry1 < entry2 ->
+     ({S.uri = uri2} as entry2)::_ when uri1 < uri2 ->
        entry1::(union_ex tl1 l2)
    | ({S.uri = uri1} as entry1)::_,
-     ({S.uri = uri2} as entry2)::tl2 when uri2 < uri1 || entry2 < entry1 ->
+     ({S.uri = uri2} as entry2)::tl2 when uri2 < uri1 ->
        entry2::(union_ex l1 tl2)
    | entry1::tl1,entry2::tl2 -> (* same entry *)
-     entry1::(union_ex tl1 tl2)
+      if entry1 = entry2 then (* same attributes *)
+       entry1::(union_ex tl1 tl2)
+      else
+       assert false
 ;;
 
 let union_ex l1 l2 =
@@ -130,7 +133,7 @@ let union_ex l1 l2 =
   let ll1 = string_of_int (List.length l1) in
   let ll2 = string_of_int (List.length l2) in
   let diff = string_of_float (after -. before) in
-  prerr_endline ("UNION(" ^ ll1 ^ "," ^ ll2 ^ "): " ^ diff ^ "s") ;
-  flush stderr ;
+  print_endline ("UNION(" ^ ll1 ^ "," ^ ll2 ^ "): " ^ diff ^ "s") ;
+  flush stdout ;
   res
 ;;