具有有限大小的Clojure优先级映射

时间:2014-03-29 13:56:48

标签: clojure

我想扩展Clojure priority-map以支持有限容量的优先级映射。一旦使用大小初始化优先级映射,如果当前计数等于映射的容量,它将基于优先级在assoc期间丢弃其他项。

我正在考虑使用deftype实现这个并改变assoc的实现。但我不确定这是否是最佳方式,或者是否可以仅覆盖assoc和进入操作。

真正了解任何反馈意见。

1 个答案:

答案 0 :(得分:1)

您可以使用Zach Tellman的potemkin库,特别是其def-map-type宏来定义其中包含优先级映射的自定义地图类型。您只需要为getassocdissockeys提供明确的实现 - 所有其他Clojure和Java方法都将自动为您实现。根据您的使用案例,getdissockeys几乎可以委托给内部优先级映射,而assoc则会实现删除逻辑。

您可能还想查看core.cache,它使用优先级映射来实现其缓存类型。