generic finger-tree structure (http://staff.city.ac.uk/~ross/papers/FingerTree.html)