Closed
Description
I've noticed that the merge
-like functions in 'Record' favor their first argument, whereas those in 'Record.Builder' favor their second. I'm guessing that a user would at least initially assume that Record merging and Builder merging would have identical semantics except for the function/Builder difference. Could this semantic distinction and its rationale be documented? Alternatively, could either Record merging or Builder merging be updated so that the two function sets are consistent with each other? (As far as I can tell, there's no pressing problem motivating this change, but consistency is often good for its own sake, and it might help to improve grokkability and to prevent merger-precedence bugs.)
-- Record
merge
:: forall r1 r2 r3 r4
. Union r1 r2 r3
=> Nub r3 r4
=> Record r1
-> Record r2
-> Record r4
merge l r = runFn2 unsafeUnionFn l r
-- Record.Builder
merge
:: forall r1 r2 r3 r4
. Row.Union r1 r2 r3
=> Row.Nub r3 r4
=> Record r2
-> Builder (Record r1) (Record r4)
merge r2 = Builder \r1 -> runFn2 unsafeUnionFn r1 r2
Metadata
Metadata
Assignees
Labels
No labels