评论由:jafingerhut
Edward,你的补丁用 m1 替换了表达式(或 m1 {})。它在 2008 年 10 月 16 日的一次提交中被从 m1 改变为(或 m1 {}),描述文本为“改进 merge,merge-with 中的 nil 处理”,所以我相当确定最好是将其保留为(或 m1 {})。我认为意图是允许 merge-with 的所有 map 参数中除了一个之外都是 nil,而一切仍然可以正常工作。
避免一个 merge 调用的补丁其余部分在我看来似乎是合理的。
如果它不只是调用第一个 map,而是调用列表中的第一个非 nil 项,然后是该项之后的列表余下部分,那么你认为这种更改会更好,因为它可以保留第一个非 nil map 上的任何元数据。