评论者:alexmiller
在这点上讨论名称并不值得 - Rich 的看法不会因此而改变。
关于补丁
- 删除:static 元数据,因为现在不再使用
- 需要文档字符串,应该按照其他 Clojure 文档字符串的风格编写。map 可能是一个很好的参考地方。
- 而不是直接声明,推迟这些的定义,直到需要定义的内容确定。没有必要为这个添加更多声明。
还有其他潜在的实现方式 - 应该实现并比较它们的性能,涵盖各种输入大小。除了当前方法外,我将调查
- reduce-kv 构建到瞬态地图中。这允许地图自我缩减(不需要缓存序列),并避免再次拆分条目。
- transducer 使用 (into {} (map ...) m)
还应该考虑
- 是否构建 k/v 向量并转换为地图,还是直接构建地图(前者可能更快,不确定)
- 如果构建地图,如何构建地图条目(向量与直接创建 mapentry 对象)
- 在 map-keys 中,map 生成新的重叠键时是否有开放问题?
- 现有核心代码中是否有可以替换 map-keys/map-vals 的地方(我相当确定有)