评论者:alexmiller
在此处讨论函数名称没有意义 - Rich 会有自己的看法。
关于补丁
- 移除 :static 元数据,因为现在不再使用了
- 需要文档字符串,应该参考其他 Clojure 文档字符串的格式。map 可能是一个很好的参考点。
- 不要立即声明,可以将定义延迟到所需的定义已经完成。没有必要添加更多声明。
还有其他潜在的实现方式 - 应该实现这些方式并比较不同输入规模的性能。除了当前的方法之外,我还将调查
- reduce-kv 与构建到临时映射中。这允许映射本身进行减少(无需缓存 seq),并避免创建仅再次拆分条目的条目。
- transducers 与 (into {} (map ...) m)
还应考虑
- 是否构建 kv 向量并将其转换为映射,或直接构建映射(前者可能更快,不确定)
- 如果构建映射,如何构建映射条目(向量或直接创建 MapEntry 对象)
- 在 map-keys 中,当 map 生成新的重叠键时是否存在任何疑问?
- 核心代码中是否有可以使用 map-keys/map-vals 的地方(我非常确定有)