
fj.data.fingertrees.Node3 Maven / Gradle / Ivy
package fj.data.fingertrees;
import fj.P;
import fj.P3;
import fj.Show;
import fj.data.Option;
import fj.data.Stream;
import fj.data.vector.V3;
import fj.F;
import fj.P2;
import static fj.data.Option.none;
import static fj.data.Option.some;
import static fj.data.fingertrees.FingerTree.mkTree;
/**
* A three-element inner tree node.
*/
public final class Node3 extends Node {
private final V3 as;
Node3(final Measured m, final V3 as) {
super(m, m.sum(m.measure(as._1()), m.sum(m.measure(as._2()), m.measure(as._3()))));
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 bff.f(bff.f(bff.f(z).f(as._1())).f(as._2())).f(as._3());
}
public B match(final F, B> n2, final F, B> n3) {
return n3.f(this);
}
@Override
public int length() {
return 3;
}
public Digit toDigit() {
return new Three<>(measured(), as);
}
P3
© 2015 - 2025 Weber Informatics LLC | Privacy Policy