public E _5() { return P5.this._5(); } };
public E _5() { return P5.this._5(); } };
public E _5() { return P5.this._5(); } };
public A _4() { return p._5(); } }));
public E _5() { return P5.this._5(); } };
public X _5() { return f.f(P5.this._5()); } };
/** * Creates a {@link P6} by adding the given element to the current {@link P5} * * @param el the element to append * @return A {@link P6} containing the original {@link P5} with the extra element added at the end */ public final <F> P6<A, B, C, D, E, F> append(F el) { return P.p(_1(), _2(), _3(), _4(), _5(), el); }
/** * Creates a {@link P7} by adding the given element to the current {@link P2} * * @param el the element to append * @return A {@link P7} containing the original {@link P2} with the extra element added at the end */ public final <C, D, E, F, G> P7<A, B, C, D, E, F, G> append(P5<C, D, E, F, G> el) { return P.p(_1(), _2(), el._1(), el._2(), el._3(), el._4(), el._5()); }
/** * Creates a {@link P7} by adding the given element to the current {@link P5} * * @param el the element to append * @return A {@link P7} containing the original {@link P5} with the extra element added at the end */ public final <F, G> P7<A, B, C, D, E, F, G> append(P2<F, G> el) { return P.p(_1(), _2(), _3(), _4(), _5(), el._1(), el._2()); }
/** * Creates a {@link P8} by adding the given element to the current {@link P5} * * @param el the element to append * @return A {@link P8} containing the original {@link P5} with the extra element added at the end */ public final <F, G, H> P8<A, B, C, D, E, F, G, H> append(P3<F, G, H> el) { return P.p(_1(), _2(), _3(), _4(), _5(), el._1(), el._2(), el._3()); }
/** * Creates a {@link P8} by adding the given element to the current {@link P3} * * @param el the element to append * @return A {@link P8} containing the original {@link P3} with the extra element added at the end */ public final <D, E, F, G, H> P8<A, B, C, D, E, F, G, H> append(P5<D, E, F, G, H> el) { return P.p(_1(), _2(), _3(), el._1(), el._2(), el._3(), el._4(), el._5()); }
/** * An equal instance for a product-5. * * @param ea Equality across the first element of the product. * @param eb Equality across the second element of the product. * @param ec Equality across the third element of the product. * @param ed Equality across the fourth element of the product. * @param ee Equality across the fifth element of the product. * @return An equal instance for a product-5. */ public static <A, B, C, D, E> Equal<P5<A, B, C, D, E>> p5Equal(final Equal<A> ea, final Equal<B> eb, final Equal<C> ec, final Equal<D> ed, final Equal<E> ee) { Definition<A> eaDef = ea.def; Definition<B> ebDef = eb.def; Definition<C> ecDef = ec.def; Definition<D> edDef = ed.def; Definition<E> eeDef = ee.def; return equalDef((p1, p2) -> eaDef.equal(p1._1(), p2._1()) && ebDef.equal(p1._2(), p2._2()) && ecDef.equal(p1._3(), p2._3()) && edDef.equal(p1._4(), p2._4()) && eeDef.equal(p1._5(), p2._5())); }
/** * A hash instance for a product-5. * * @param ha A hash for the first element of the product. * @param hb A hash for the second element of the product. * @param hc A hash for the third element of the product. * @param hd A hash for the fourth element of the product. * @param he A hash for the fifth element of the product. * @return A hash instance for a product-5. */ public static <A, B, C, D, E> Hash<P5<A, B, C, D, E>> p5Hash(final Hash<A> ha, final Hash<B> hb, final Hash<C> hc, final Hash<D> hd, final Hash<E> he) { return hash(p5 -> { final int p = 419; int r = 239; r = p * r + ha.hash(p5._1()); r = p * r + hb.hash(p5._2()); r = p * r + hc.hash(p5._3()); r = p * r + hd.hash(p5._4()); r = p * r + he.hash(p5._5()); return r; }); }
/** * A show instance for the {@link P5 tuple-5} type. * * @param sa Show for the first element of the tuple. * @param sb Show for the second element of the tuple. * @param sc Show for the third element of the tuple. * @param sd Show for the fourth element of the tuple. * @param se Show for the fifth element of the tuple. * @return A show instance for the {@link P5 tuple-5} type. */ public static <A, B, C, D, E> Show<P5<A, B, C, D, E>> p5Show(final Show<A> sa, final Show<B> sb, final Show<C> sc, final Show<D> sd, final Show<E> se) { return show(p -> cons('(', p(sa.show(p._1()))).snoc(',').append(sb.show(p._2())).snoc(',') .append(sc.show(p._3())).snoc(',').append(sd.show(p._4())).snoc(',').append(se.show(p._5())).snoc(')')); }