Clojure的新的contrib库组有一个finger tree library。在clojure中手指树有什么用例?什么时候应该使用手指树而不是clojure的其他持久性数据结构之一:向量,集合,映射,持久性等等。
Joy of Clojure提到Finger树可用于需要廉价插入和删除的索引集合。它们也被描述为“数据结构的瑞士军刀”。非常感谢这方面的例子。
答案 0 :(得分:27)
在paper by Ralf Hinze and Ross Paterson中描述了2-3个手指树。它们不仅提供了数据结构本身的完整描述,还提供了几个如何在Haskell中使用它的示例。他们描述的大部分功能已经在Clojure库中提供,但文档还没有。
本周末我将在Clojure Conj介绍Clojure手指树。
更新:现在在http://github.com/clojure/data.finger-tree#readme
显示了一些示例更新:来自演讲的幻灯片:https://github.com/Chouser/talk-finger-tree/blob/master/finger-trees.pdf