评论人:alexmiller
在这个问题上没有必要的自行车棚命名 - Rich 会有自己的意见。
关于补丁
- 删除 :static 元数据,因为它不再使用。
- 需要书写文档字符串,应该采用其他 Clojure 文档字符串的风格。map 可能是一个借鉴的好地方。
- 而不是声明,应该直到需要的定义完成后再定义这些。没有必要添加更多的声明。
存在其他潜在实现 - 这些应该被实现并比较不同输入大小范围的性能。除了当前的方法之外,我还将调查
- 使用reduce-kv将构造到一个临时映射中。这允许映射自身进行减少(无需序列缓存)并避免创建只为了再次拆分条目。
- 使用(transducer) into {} (map ...) m
还应考虑
- 是否构建一个键/值向量并将其转换为映射,或者直接构建映射(前者可能更快,不确定)
- 如果构建映射,如何构造映射条目(向量与直接创建映射条目对象)
- 在map-keys中,当map生成新的重叠键时,是否有任何未解决的问题?
- 在现有的核心代码中,是否可以在map-keys/map-vals中使用(我非常确信有)