评论由:alexmiller 提出
在这个问题上不必纠结名称 - Rich 无论怎样都会有自己的想法。
关于补丁
- 删除 :static 元数据,现在不再使用
- 需要编写文档字符串,应采用其他 Clojure 文档字符串的风格。map 似乎是一个很好的参考点。
- 不要立即声明,等到需要的定义已经确定后再进行定义。没有必要为这个添加更多的声明。
还有其他潜在的实现方式 - 这些应该被实现,并且应该在各种输入大小上进行性能比较。除了当前方法,我还将调查
- 使用 reduce-kv 将构建到临时映射中。这允许映射自身进行归约(不需要seq缓存)并避免创建条目然后再分解。
- 使用 (into {} (map ... m)) 的转换器
还应考虑
- 是否构建 k/v 向量并将其转换为映射,还是直接构建映射(前者可能更快,不确定)
- 如果构建映射,如何构建映射条目(向量与直接创建 mapentry 对象)
- 在 map-keys 中,当 map 生成新的重叠键时是否有任何未解决的问题?
- 在现有核心代码中有哪些地方可以使用 map-keys/map-vals(我相当确定它是存在的)