package fj; /** * Functions across products. * * @version %build.number% */ public final class P { private P() { throw new UnsupportedOperationException(); } /** * A function that puts an element in a product-1. * * @return A function that puts an element in a product-1. */ public static F> p1() { return new F>() { public P1 f(final A a) { return p(a); } }; } /** * A function that puts an element in a product-1. * * @param a The element. * @return The product-1. */ public static P1 p(final A a) { return new P1() { public A _1() { return a; } }; } /** * A function that puts an element in a product-2. * * @return A function that puts an element in a product-2. */ public static F>> p2() { return new F>>() { public F> f(final A a) { return new F>() { public P2 f(final B b) { return p(a, b); } }; } }; } /** * A function that puts elements in a product-2. * * @param a An element. * @param b An element. * @return The product-2. */ public static P2 p(final A a, final B b) { return new P2() { public A _1() { return a; } public B _2() { return b; } }; } /** * A function that puts an element in a product-3. * * @return A function that puts an element in a product-3. */ public static F>>> p3() { return new F>>>() { public F>> f(final A a) { return new F>>() { public F> f(final B b) { return new F>() { public P3 f(final C c) { return p(a, b, c); } }; } }; } }; } /** * A function that puts elements in a product-3. * * @param a An element. * @param b An element. * @param c An element. * @return The product-3. */ public static P3 p(final A a, final B b, final C c) { return new P3() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } }; } /** * A function that puts an element in a product-4. * * @return A function that puts an element in a product-4. */ public static F>>>> p4() { return new F>>>>() { public F>>> f(final A a) { return new F>>>() { public F>> f(final B b) { return new F>>() { public F> f(final C c) { return new F>() { public P4 f(final D d) { return p(a, b, c, d); } }; } }; } }; } }; } /** * A function that puts elements in a product-4. * * @param a An element. * @param b An element. * @param c An element. * @param d An element. * @return The product-4. */ public static P4 p(final A a, final B b, final C c, final D d) { return new P4() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } public D _4() { return d; } }; } /** * A function that puts an element in a product-5. * * @return A function that puts an element in a product-5. */ public static F>>>>> p5() { return new F>>>>>() { public F>>>> f(final A a) { return new F>>>>() { public F>>> f(final B b) { return new F>>>() { public F>> f(final C c) { return new F>>() { public F> f(final D d) { return new F>() { public P5 f(final E e) { return p(a, b, c, d, e); } }; } }; } }; } }; } }; } /** * A function that puts elements in a product-5. * * @param a An element. * @param b An element. * @param c An element. * @param d An element. * @param e An element. * @return The product-5. */ public static P5 p(final A a, final B b, final C c, final D d, final E e) { return new P5() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } public D _4() { return d; } public E _5() { return e; } }; } /** * A function that puts an element in a product-6. * * @return A function that puts an element in a product-6. */ public static F>>>>>> p6() { return new F>>>>>>() { public F>>>>> f(final A a) { return new F>>>>>() { public F>>>> f(final B b) { return new F>>>>() { public F>>> f(final C c) { return new F>>>() { public F>> f(final D d) { return new F>>() { public F> f(final E e) { return new F>() { public P6 f(final F$ f) { return p(a, b, c, d, e, f); } }; } }; } }; } }; } }; } }; } /** * A function that puts elements in a product-6. * * @param a An element. * @param b An element. * @param c An element. * @param d An element. * @param e An element. * @param f An element. * @return The product-6. */ public static P6 p(final A a, final B b, final C c, final D d, final E e, final F$ f) { return new P6() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } public D _4() { return d; } public E _5() { return e; } public F$ _6() { return f; } }; } /** * A function that puts an element in a product-7. * * @return A function that puts an element in a product-7. */ public static F>>>>>>> p7() { return new F>>>>>>>() { public F>>>>>> f(final A a) { return new F>>>>>>() { public F>>>>> f(final B b) { return new F>>>>>() { public F>>>> f(final C c) { return new F>>>>() { public F>>> f(final D d) { return new F>>>() { public F>> f(final E e) { return new F>>() { public F> f(final F$ f) { return new F>() { public P7 f(final G g) { return p(a, b, c, d, e, f, g); } }; } }; } }; } }; } }; } }; } }; } /** * A function that puts elements in a product-7. * * @param a An element. * @param b An element. * @param c An element. * @param d An element. * @param e An element. * @param f An element. * @param g An element. * @return The product-7. */ public static P7 p(final A a, final B b, final C c, final D d, final E e, final F$ f, final G g) { return new P7() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } public D _4() { return d; } public E _5() { return e; } public F$ _6() { return f; } public G _7() { return g; } }; } /** * A function that puts an element in a product-8. * * @return A function that puts an element in a product-8. */ public static F>>>>>>>> p8() { return new F>>>>>>>>() { public F>>>>>>> f(final A a) { return new F>>>>>>>() { public F>>>>>> f(final B b) { return new F>>>>>>() { public F>>>>> f(final C c) { return new F>>>>>() { public F>>>> f(final D d) { return new F>>>>() { public F>>> f(final E e) { return new F>>>() { public F>> f(final F$ f) { return new F>>() { public F> f(final G g) { return new F>() { public P8 f(final H h) { return p(a, b, c, d, e, f, g, h); } }; } }; } }; } }; } }; } }; } }; } }; } /** * A function that puts elements in a product-8. * * @param a An element. * @param b An element. * @param c An element. * @param d An element. * @param e An element. * @param f An element. * @param g An element. * @param h An element. * @return The product-8. */ public static P8 p(final A a, final B b, final C c, final D d, final E e, final F$ f, final G g, final H h) { return new P8() { public A _1() { return a; } public B _2() { return b; } public C _3() { return c; } public D _4() { return d; } public E _5() { return e; } public F$ _6() { return f; } public G _7() { return g; } public H _8() { return h; } }; } }