评论者:alexmiller
在这个问题中讨论函数名没有意义 - Rich 有自己的看法。
在补丁中
- 移除 :static 元数据,因为现在不再使用它了
- 需要文档字符串,应该采用其他 Clojure 文档字符串的风格。map 是可能参考的地方。
- 不是立即声明,而是推迟定义,直到需要什么时再定义。没有必要为此添加更多的声明。
还有其他可能的实现 - 这些应该实现,并在一系列输入大小上比较性能。除了当前方法之外,我还将调查
- reduce-kv 和构建到临时映射中。这允许映射自己递减(无需缓存序列)并避免创建仅为了拆分开的条目。
- transducers with (into {} (map ...) m)
还应该考虑
- 是否构建一个键/值向量并将其转换为映射,还是直接构建映射(前者可能更快,不确定)
- 如果构建映射,则如何构建映射条目(向量与直接创建 mapentry 对象)
- 在 map-keys 中,当 map 生成新的重叠键时,有任何开放问题吗?
- 在现有的核心代码中,是否有可以用于 map-keys/map-vals 的地方(我相当肯定有)