(pfds fingertree)

fingertree? : any -> bool returns #t if argument is a fingertree, #f otherwise.

(make-fingertree id append convert)

make-fingertree : id combine measure -> fingertree returns a new fingertree, parameterised by the given monoid.

(fingertree-cons a fingertree)

fingertree-cons : any fingertree -> fingertree returns the new fingertree created by adding the element to the front of the argument fingertree.

(fingertree-snoc fingertree a)

fingertree-snoc : fingertree any -> fingertree returns the new fingertree created by adding the element to the end of the fingertree.

(fingertree-uncons fingertree)

fingertree-uncons : fingertree -> any + fingertree returns two values: the element at the front of the fingertree, and a new fingertree containing all but the front element. If the fingertree is empty, an error is raised.

(fingertree-unsnoc fingertree)

fingertree-unsnoc : fingertree -> fingertree + any returns two values: a new fingertree containing all but the rear element of the argument fingertree, and the rear element itself. If the fingertree is empty, an error is raised.

(fingertree-empty? fingertree)

fingertree-empty? : fingertree -> bool returns #t if there are no items in the fingertree, #f otherwise.

(fingertree-append fingertree1 fingertree2)

fingertree-append : fingertree fingertree -> fingertree returns a new fingertree which contains all of the elements of the first fingertree argument, followed by all the elements of the second. The argument fingertrees are assumed to be parameterised by the same monoid.

(list->fingertree l id appnd convert)

list->fingertree : (list->fingertree l id append convert) returns a fingertree containing all of the elements of the argument list, in the same order.

(fingertree->list t)

fingertree->list : fingertree -> Listof(Any) returns a list of all the elements in the fingertree, in the order they would be unconsed.

(fingertree-measure fingertree)

fingertree-measure : fingertree -> any returns the measure of the fingertree, as defined by the fingertree's monoid.

(fingertree-split p fingertree)

fingertree-split : (any -> bool) fingertree -> fingertree + fingertree returns two values: the first is the largest prefix of the fingertree for which applying the predicate to it's accumulated measure returns #f. The second values is a fingertree containing all those elements not in the first fingertree.

(fingertree-split3 p fingertree)

fingertree-split3: (any -> bool) fingertree -> fingertree + value + fingertree similar to fingertree-split, however, instead of returning the remainder as the second argument, it returns the head of the remainder as the second argument, and tail of the remainder as the third argument.

(fingertree-fold f b fingertree)

fingertree-fold : (any -> any -> any) any fingertree returns the value obtained by iterating the combiner procedure over the fingertree in left-to-right order. This procedure takes two arguments, the current value from the fingertree, and an accumulator, and it's return value is used as the accumulator for the next iteration. The initial value for the accumulator is given by the base argument.

(fingertree-fold-right f b fingertree)

fingertree-fold-right : (any -> any -> any) any fingertree similar to fingertree-fold, but iterates in right-to-left order.

(fingertree-reverse fingertree)

fingertree-reverse : fingertree -> fingertree returns a new fingertree in which the elements are in the opposite order from the argument fingertree.