Module BatFingerTree.Generic

module Generic: sig .. end

include BatFingerTree.S
val lookup : (('m -> bool) -> ('a, 'm) fg -> 'a, 'a, 'm) wrap
lookup p t, when p is monotonic, returns the first element of the sequence for which the measure of its predecessors in the sequence (itself included) satisfies p.
Raises Empty is there is no such element.

O(log(n)).

When p is not monotonic, take a look at the code or at the paper cited above and see if you understand something (lookup is a specialized version of splitTree that returns the element without building the left and right tree).

val measure : (('a, 'm) fg -> 'm, 'a, 'm) wrap
measure m gives the measure of the whole tree, whose meaning depends on the measure chosen.

O(1).

val split : (('m -> bool) -> ('a, 'm) fg -> ('a, 'm) fg * ('a, 'm) fg, 'a, 'm) wrap
split p t, when p is monotonic, returns (t1, t2) where t1 is the longest prefix of t whose measure does not satifies p, and t2 is the rest of t.
Raises Empty is there is no such element

O(log(n)).

When p is not monotonic, take a look at the code or at the paper cited above and see if you understand something.