18 lines
579 B
Text
18 lines
579 B
Text
let rec merge_impl = fun base override =>
|
|
if (std.typeof base) == "record" && (std.typeof override) == "record" then
|
|
let base_fields = std.record.fields base in
|
|
base_fields |> std.array.fold_left
|
|
(fun acc key =>
|
|
let base_value = base |> std.record.get key in
|
|
if std.record.has_field key override then
|
|
let override_value = override |> std.record.get key in
|
|
acc |> std.record.insert key override_value
|
|
else
|
|
acc |> std.record.insert key base_value
|
|
)
|
|
{}
|
|
else
|
|
override
|
|
in
|
|
|
|
{ merge = merge_impl }
|