Finger Trees are awesome. But they could be simpler and even more awesome and versatile.
The current implementation of finger trees in Clojure is a faithful re-implementation of the original paper by Paterson and Hinze. But is the structure of finger trees described there really the optimum?
This repository is a work-in-progress effort to develop a data structure that follows the basic idea behind finger trees and obeys the same Big-O properties for all operations, but is simpler and more general:
- Use fewer cases (Seed/Tree instead of Empty/Single/Deep) to allow easier definition in OO languages (done)
- Decouple Finger Trees from 2-3 Nodes and allow arbitrary container structures (partially done)
- Allow "Monoid-mixing" to create new Finger Trees from pre-defined blocks
This is only a research project right now. Do not use it. (It's a miracle it even compiles...)
Copyright © 2013 Frederic Kettelhoit
Distributed under the Eclipse Public License, the same as Clojure.