def merge
import cswap-bend-cli@0.1.0.0/setimp.bend as Setimpimport Base
import cswap-bend-cli@0.1.0.0/json.bend as Json
377# `over` laid on `base`: objects merge key by key, anything else replaces, and
378# null removes the key.
379def merge(over: Json.Json, +base: Json.Json) -> Json.Json:
380 match over:
381 case Json.JObj{f}:
382 merge(f, base)
383 case Json.JField{+k, +v, t}:
384 merge(t, put(k, v, base, merge(v, or_null(Json.get(k, base)))))
385 case Json.JNil{}:
386 base
387 case _:
388 over