package fpeas.function; public class FunctionUtility { public static Function constant(final R value) { return new Function() { public R run(final T t) { return value; } }; } public static Function equal(final int i) { return new Function() { public Boolean run(final Integer integer) { return integer==i; } }; } public static Function identity() { return new Function() { public T run(final T t) { return t; } }; } public static Function minus(final Function first, final Function second) { return new Function() { public Integer run(final T t) { return first.run(t)-second.run(t); } }; } public static Function add(final Function first,final Function second) { return new Function() { public Integer run(final T t) { return first.run(t)+second.run(t); } }; } public static Function compose(final Function first, final Function second) { return new Function() { public X run(final T t) { return second.run(first.run(t)); } }; } }