This commit is contained in:
Yadunand Prem
2022-10-04 15:47:40 +08:00
parent 672d87b00e
commit 26df644e0d
5 changed files with 271 additions and 57 deletions

View File

@@ -0,0 +1,23 @@
package cs2030s.fp;
public abstract class Transformer<R, P> implements Immutator<R, P> {
public <N> Transformer<R, N> after(Transformer<P, N> g) {
Transformer<R, P> f = this;
return new Transformer<R, N>() {
@Override
public R invoke(N param) {
return f.invoke(g.invoke(param));
}
};
}
public <T> Transformer<T, P> before(Transformer<T, R> g) {
Transformer<R, P> f = this;
return new Transformer<T, P>() {
@Override
public T invoke(P param) {
return g.invoke(f.invoke(param));
}
};
}
}