- keys of objects get merged { a: .. , b: .. } with { b: .. , c: .. }
- the value of b needs to be merged; recurse
- elements of arrays get
- primitives in left and right that are distinct, produce a type error
so
- objects have set semantics; recursive set merge
- arrays have sequence semantics; order is important
- certain objects produce nonsensical merge results