评论由:alexmiller 发表
在这个问题上没有必要浪费时间讨论名字 - Rich 将会有自己的看法。
关于补丁
- 删除不再使用的 :static 元数据
- 需要文档字符串,应该按照其他 Clojure 文档字符串的风格来编写。map 是可能的参考地点。
- 而不是立即声明,这些定义应推迟到所需的部分被定义。没有必要为这个增加更多的声明。
还有其他的潜在实现 - 这些应该被实现并在一系列输入大小上比较性能。除了当前方法之外,我还会调查
- 使用 constructing into a transient map 的 reduce-kv。这允许 map 自己减少(不需要 seq 缓存)并避免创建条目然后再次拆散。
- transducers with (into {} (map ...) m)
还应考虑:
- 是否构建 k/v 向量和转换为映射,还是直接构建映射(前者可能更快,不确定)
- 如果构建映射,如何构建映射条目(向量与否直接创建 mapentry 对象)
- 在 map-keys 中,当 map 生成新的重叠键时是否存在任何未解决的问题?
- 在现有核心代码中,map-keys/map-vals 是否有地方可以使用(我相当确定有)