]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/diff.ml
After Union and Relation
[helm.git] / helm / ocaml / mathql_interpreter / diff.ml
index e2eea1bc1e8025f70f75d6a5bc409d99f1c14dea..28e874c865f200931a30cd1c4f016873fc65fcc6 100644 (file)
@@ -24,8 +24,8 @@
  *)
 
 (*
- * implementazione del comando DIFF
- *)
+ * vecchia implementazione del comando DIFF
 
 exception NotCompatible;;
 
@@ -45,9 +45,7 @@ let rec intersect_attributes (attr1, attr2) =
   | _, _ -> raise NotCompatible  (* same keys, different values *)
 ;;
 
-(*
- * implementazione del comando DIFF
- *)
 let rec diff_ex l1 l2 =
  let module S = Mathql_semantics in
   match (l1, l2) with
@@ -67,6 +65,22 @@ let rec diff_ex l1 l2 =
         NotCompatible ->
          {S.uri = uri1 ; S.attributes = attributes1 ; S.extra = ""}::(diff_ex tl1 tl2)
 ;;
+*)
+
+(*
+ * implementazione del comando DIFF
+ *)
+let rec diff_ex rs1 rs2 =
+  match (rs1, rs2) with
+     [],_ -> []
+   | l,[] -> l
+   | (uri1,l)::tl1,(uri2,_)::_ when uri1 < uri2 -> (uri1,l)::(diff_ex tl1 rs2)
+   | (uri1,_)::_,(uri2,_)::tl2 when uri2 < uri1 -> (diff_ex rs1 tl2)
+   | (uri1,_)::tl1, (uri2,_)::tl2 -> (diff_ex tl1 tl2)
+;;
+
+
+
 
 let diff_ex l1 l2 =
  let before = Unix.time () in