评论人:alexmiller
在这个问题上没有必要像处理自行车棚一样命名,Rich 将有自己的观点。
针对补丁
- 删除 :static 元数据,因为这个不再使用
- 需要 docstrings,其风格应与其他 Clojure docstrings 一致。可以使用 map 作为参考。
- 不要一开始就声明,这些定义可以推迟,直到所需内容定义完成。没有必要添加更多声明。
存在其他潜在实现 - 应当在不同输入规模下实现和比较性能。除了当前方法外,我还将研究
- 使用 reduce-kv 构造一个临时映射。这允许映射自身进行减少(不需要序列缓存)并避免仅创建条目然后再拆分它们的操作。
- 使用包含 (into {} (map ...) m) 的转换器
还应考虑
- 是否构建一个 k/v 向量并将其转换为映射,或者直接构建映射(前者可能更快,尚不确定)
- 如果构建映射,如何构建映射条目(向量与直接创建 MapEntry 对象)
- 在 map-keys 中,当 map 生成新的重叠键时,是否有任何开放性问题?
- 在现有核心代码中,是否有地方可以使用 map-keys/map-vals(我相当确定有)