
fj.data.fingertrees.Three Maven / Gradle / Ivy
package fj.data.fingertrees;
import fj.P;
import fj.P2;
import fj.P3;
import fj.Show;
import fj.data.Option;
import fj.data.Stream;
import fj.data.vector.V3;
import fj.F;
import static fj.data.Option.none;
import static fj.data.Option.some;
import static fj.data.fingertrees.FingerTree.mkTree;
/**
* A three-element prefix or suffix of a finger tree.
*/
public final class Three extends Digit {
private final V3 as;
Three(final Measured m, final V3 as) {
super(m);
this.as = as;
}
public B foldRight(final F> aff, final B z) {
return aff.f(as._1()).f(aff.f(as._2()).f(aff.f(as._3()).f(z)));
}
public B foldLeft(final F> bff, final B z) {
return as.toStream().foldLeft(bff, z);
}
@Override public B match(
final F, B> one, final F, B> two, final F, B> three,
final F, B> four) {
return three.f(this);
}
/**
* Returns the elements of this digit as a vector.
*
* @return the elements of this digit as a vector.
*/
public V3 values() {
return as;
}
@Override P3
© 2015 - 2025 Weber Informatics LLC | Privacy Policy