[],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 =