generic finger-tree structure (http://staff.city.ac.uk/~ross/papers/FingerTree.html)
#13Add extraction function
For priority queues, one important finger tree operation is splitting a tree, extracting the split point, and then joining the tree back together. This can be done in one pass with substantially better constant factors using a twisted-inside-out version of classical 2–3 tree deletion. See the deleteAt
function in Data.Sequence
. Ideally the function would return the same "metadata" as search
.