Fn2Chain.java
package no.motif.f.combine;
import no.motif.f.Fn;
import no.motif.f.Fn2;
public class Fn2Chain<I1, I2, T, O> implements Fn2<I1, I2, O> {
private final Fn2<I1, I2, T> first;
private final Fn<? super T, O> second;
public Fn2Chain(Fn2<I1, I2, T> first, Fn<? super T, O> second) {
this.first = first;
this.second = second;
}
public <N> Fn2Chain<I1, I2, O, N> then(Fn<? super O, N> next) {
return new Fn2Chain<>(this, next);
}
@Override
public O $(I1 v1, I2 v2) {
return second.$(first.$(v1, v2));
}
}