# Test: Non-recursive merge (single level only) { merge_shallow = fun base override => if (std.typeof base) == "record" && (std.typeof override) == "record" then let base_fields = std.record.fields base in let override_fields = std.record.fields override in # Pass 1: iterate base fields base_fields |> std.array.fold_left (fun acc key => let base_value = std.record.get key base in if std.record.has_field key override then let override_value = std.record.get key override in acc |> std.record.insert key override_value else acc |> std.record.insert key base_value ) {} # Pass 2: add override-only fields |> (fun merged => override_fields |> std.array.fold_left (fun acc key => if !(std.record.has_field key base) then acc |> std.record.insert key (std.record.get key override) else acc ) merged ) else if (std.typeof override) == "null" then base else override, }