Copyright 2008 - 2010 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg

This software is released under an open source BSD licence.

fj.data.fingertrees
Class MakeTree<V,A>

java.lang.Object
  extended by fj.data.fingertrees.MakeTree<V,A>

public final class MakeTree<V,A>
extends java.lang.Object

A builder of trees and tree components, supplied with a particular monoid and measuring function.


Method Summary
 FingerTree<V,A> deep(Digit<V,A> prefix, FingerTree<V,Node<V,A>> middle, Digit<V,A> suffix)
          Constructs a deep tree.
 FingerTree<V,A> deep(V v, Digit<V,A> prefix, FingerTree<V,Node<V,A>> middle, Digit<V,A> suffix)
          Constructs a deep tree with the given annotation value.
 FingerTree<V,A> empty()
          Constructs an empty tree.
 Four<V,A> four(A a, A b, A c, A d)
          A digit of four elements.
 Node2<V,A> node2(A a, A b)
          A binary tree node.
 Node2<V,A> node2(V2<A> v)
          A binary tree node
 Node3<V,A> node3(A a, A b, A c)
          A trinary tree node.
 Node3<V,A> node3(V3<A> v)
          A trinary tree node
 One<V,A> one(A a)
          A digit of one element.
 FingerTree<V,A> single(A a)
          Constructs a singleton tree.
 Three<V,A> three(A a, A b, A c)
          A digit of three elements.
 Two<V,A> two(A a, A b)
          A digit of two elements.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

empty

public FingerTree<V,A> empty()
Constructs an empty tree.

Returns:
The empty tree.

single

public FingerTree<V,A> single(A a)
Constructs a singleton tree.

Parameters:
a - A single element for the tree.
Returns:
A tree with the given value as the single element.

deep

public FingerTree<V,A> deep(Digit<V,A> prefix,
                            FingerTree<V,Node<V,A>> middle,
                            Digit<V,A> suffix)
Constructs a deep tree. This structure consists of two digits, of 1 to 4 elements each, on the left and right, with the rest of the tree in the middle.

Parameters:
prefix - The leftmost elements of the tree.
middle - The subtree, which is a Finger Tree of 2-3 nodes.
suffix - The rightmost elements of the tree.
Returns:
A new finger tree with the given prefix, suffix, and middle.

deep

public FingerTree<V,A> deep(V v,
                            Digit<V,A> prefix,
                            FingerTree<V,Node<V,A>> middle,
                            Digit<V,A> suffix)
Constructs a deep tree with the given annotation value.

Parameters:
v - The value with which to annotate this tree.
prefix - The leftmost elements of the tree.
middle - The subtree, which is a Finger Tree of 2-3 nodes.
suffix - The rightmost elements of the tree.
Returns:
A new finger tree with the given prefix, suffix, and middle, and annotated with the given value.

one

public One<V,A> one(A a)
A digit of one element.

Parameters:
a - The element of the digit.
Returns:
A digit of the given element.

two

public Two<V,A> two(A a,
                    A b)
A digit of two elements.

Parameters:
a - The first element of the digit.
b - The second element of the digit.
Returns:
A digit of the given elements.

three

public Three<V,A> three(A a,
                        A b,
                        A c)
A digit of three elements.

Parameters:
a - The first element of the digit.
b - The second element of the digit.
c - The third element of the digit.
Returns:
A digit of the given elements.

four

public Four<V,A> four(A a,
                      A b,
                      A c,
                      A d)
A digit of four elements.

Parameters:
a - The first element of the digit.
b - The second element of the digit.
c - The third element of the digit.
d - The fifth element of the digit.
Returns:
A digit of the given elements.

node2

public Node2<V,A> node2(A a,
                        A b)
A binary tree node.

Parameters:
a - The left child of the node.
b - The right child of the node.
Returns:
A new binary tree node.

node3

public Node3<V,A> node3(A a,
                        A b,
                        A c)
A trinary tree node.

Parameters:
a - The left child of the node.
b - The middle child of the node.
c - The right child of the node.
Returns:
A new trinary tree node.

node2

public Node2<V,A> node2(V2<A> v)
A binary tree node

Parameters:
v - A vector of the node's elements.
Returns:
A new binary tree node.

node3

public Node3<V,A> node3(V3<A> v)
A trinary tree node

Parameters:
v - A vector of the node's elements.
Returns:
A new trinary tree node.

Copyright 2008 - 2010 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg

This software is released under an open source BSD licence.