评论人:alexmiller
在这个问题上命名并不是关键——Rich 会给出他自己的看法。
关于这个补丁
- 删除了 :static 元数据,因为现在不再使用
- 需要添加文档字符串,应采用与其它Clojure文档字符串相同的风格。可以从map函数中获取灵感。
- 而不是声明定义,我们先推迟这些定义,直到需要它们所依赖的部分已经定义完毕。没有必要添加更多声明。
还有其他潜在的实现方式——这些应该得到实现,并在不同大小的输入范围内进行性能比较。除了当前的方法外,我还将调查
- 使用reduce-kv和构造transient map。这允许map自我缩减(无需seq缓存),并避免创建条目再次拆分。
- 使用transducers进行(into {} (map ...) m)
还应考虑以下因素
- 是否构建k/v矢量并将其转换为map,或者直接构建map(前者可能更快,不确定)
- 如果构建map,如何构造映射项(矢量和直接创建mapentry对象)
- 在map-keys中,当map生成新的重叠键时,是否有任何未解决的问题?
- 在现有核心代码中,哪里可以使用map-keys/map-vals?(我相当确定是有的)