I don't think we need a merger function. Just making union consistently prefer the lhs would be ok, right? That would complicate the code a bit, and also lose some structural sharing in case the lhs is small and the rhs is large. Similar things would have to be done with diff and intersect.

The main problem is that I am back to work, so I can not really work on this a lot.