package pond.common.f;

public interface Function<R, A> {

  R apply(A t);

  interface F0<R> {

    R apply();
  }

  interface F0ERR<R> {

    R apply() throws Exception;
  }

  interface F2<R, A, B> {

    R apply(A a, B b);
  }

  interface F3<R, A, B, C> {

    R apply(A a, B b, C c);
  }

  interface F4<R, A, B, C, D> {

    R apply(A a, B b, C c, D d);
  }

  interface F5<R, A, B, C, D, E> {

    R apply(A a, B b, C c, D d, E e);
  }

}

@@ -52,16 +52,119 @@
 , A%3E %7B%0A%0A
+  /**%0A   *  Function do nothing but return the argument as-is.%0A   */%0A  static Function NOOP = a -%3E a;%0A%0A
   R appl

add NOOP function