Class Single<V,A>

java.lang.Object
fj.data.fingertrees.FingerTree<V,A>
fj.data.fingertrees.Single<V,A>

public final class Single<V,A> extends FingerTree<V,A>
A tree with a single element.
  • Field Details

    • a

      private final A a
    • v

      private final V v
  • Constructor Details

  • Method Details

    • foldRight

      public <B> B foldRight(F<A,F<B,B>> aff, B z)
      Description copied from class: FingerTree
      Folds the tree to the right with the given function and the given initial element.
      Specified by:
      foldRight in class FingerTree<V,A>
      Parameters:
      aff - A function with which to fold the tree.
      z - An initial element to apply to the fold.
      Returns:
      A reduction of this tree by applying the given function, associating to the right.
    • reduceRight

      public A reduceRight(F<A,F<A,A>> aff)
      Description copied from class: FingerTree
      Folds the tree to the right with the given function.
      Specified by:
      reduceRight in class FingerTree<V,A>
      Parameters:
      aff - A function with which to fold the tree.
      Returns:
      A reduction of this tree by applying the given function, associating to the right.
    • foldLeft

      public <B> B foldLeft(F<B,F<A,B>> bff, B z)
      Description copied from class: FingerTree
      Folds the tree to the left with the given function and the given initial element.
      Specified by:
      foldLeft in class FingerTree<V,A>
      Parameters:
      bff - A function with which to fold the tree.
      z - An initial element to apply to the fold.
      Returns:
      A reduction of this tree by applying the given function, associating to the left.
    • reduceLeft

      public A reduceLeft(F<A,F<A,A>> aff)
      Description copied from class: FingerTree
      Folds the tree to the left with the given function.
      Specified by:
      reduceLeft in class FingerTree<V,A>
      Parameters:
      aff - A function with which to fold the tree.
      Returns:
      A reduction of this tree by applying the given function, associating to the right.
    • map

      public <B> FingerTree<V,B> map(F<A,B> abf, Measured<V,B> m)
      Description copied from class: FingerTree
      Maps the given function across this tree, measuring with the given Measured instance.
      Specified by:
      map in class FingerTree<V,A>
      Parameters:
      abf - A function to map across the values of this tree.
      m - A measuring with which to annotate the tree.
      Returns:
      A new tree with the same structure as this tree, with each element transformed by the given function, and nodes annotated according to the given measuring.
    • measure

      public V measure()
      Returns the annotation of this tree's single element.
      Specified by:
      measure in class FingerTree<V,A>
      Returns:
      the annotation of this tree's single element.
    • match

      public <B> B match(F<Empty<V,A>,B> empty, F<Single<V,A>,B> single, F<Deep<V,A>,B> deep)
      Pattern matching on the structure of this tree. Matches the singleton tree.
      Specified by:
      match in class FingerTree<V,A>
      Parameters:
      empty - The function to apply to this empty tree.
      single - A function to apply if this tree contains a single element.
      deep - A function to apply if this tree contains more than one element.
      Returns:
      The result of the function that matches this tree structurally, applied to this tree.
    • cons

      public FingerTree<V,A> cons(A b)
      Description copied from class: FingerTree
      Adds the given element to this tree as the first element.
      Specified by:
      cons in class FingerTree<V,A>
      Parameters:
      b - The element to add to the front of this tree.
      Returns:
      A new tree with the given element at the front.
    • snoc

      public FingerTree<V,A> snoc(A b)
      Description copied from class: FingerTree
      Adds the given element to this tree as the last element.
      Specified by:
      snoc in class FingerTree<V,A>
      Parameters:
      b - The element to add to the end of this tree.
      Returns:
      A new tree with the given element at the end.
    • head

      public A head()
      Description copied from class: FingerTree
      The first element of this tree. This is an O(1) operation.
      Specified by:
      head in class FingerTree<V,A>
      Returns:
      The first element if this tree is nonempty, otherwise throws an error.
    • last

      public A last()
      Description copied from class: FingerTree
      The last element of this tree. This is an O(1) operation.
      Specified by:
      last in class FingerTree<V,A>
      Returns:
      The last element if this tree is nonempty, otherwise throws an error.
    • tail

      public FingerTree<V,A> tail()
      Description copied from class: FingerTree
      The tree without the first element. This is an O(1) operation.
      Specified by:
      tail in class FingerTree<V,A>
      Returns:
      The tree without the first element if this tree is nonempty, otherwise throws an error.
    • init

      public FingerTree<V,A> init()
      Description copied from class: FingerTree
      The tree without the last element. This is an O(1) operation.
      Specified by:
      init in class FingerTree<V,A>
      Returns:
      The tree without the last element if this tree is nonempty, otherwise throws an error.
    • append

      public FingerTree<V,A> append(FingerTree<V,A> t)
      Description copied from class: FingerTree
      Appends one finger tree to another.
      Specified by:
      append in class FingerTree<V,A>
      Parameters:
      t - A finger tree to append to this one.
      Returns:
      A new finger tree which is a concatenation of this tree and the given tree.
    • split1

      P3<FingerTree<V,A>,A,FingerTree<V,A>> split1(F<V,Boolean> predicate, V acc)
      Specified by:
      split1 in class FingerTree<V,A>
    • lookup

      public P2<Integer,A> lookup(F<V,Integer> o, int i)
      Specified by:
      lookup in class FingerTree<V,A>
    • length

      public int length()
      Specified by:
      length in class FingerTree<V,A>
    • value

      public A value()
      Returns the single element of this tree.
      Returns:
      the single element of this tree.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toStream

      public Stream<A> toStream()
      Specified by:
      toStream in class FingerTree<V,A>