@@ -178,7 +178,68 @@ public final P1<B> _2_() {
178178 return F1Functions .lazy (P2 .<A , B >__2 ()).f (this );
179179 }
180180
181- /**
181+ /**
182+ * Creates a {@link P3} by adding the given element to the current {@link P2}
183+ *
184+ * @param el the element to append
185+ * @return A {@link P3} containing the original {@link P2} with the extra element added at the end
186+ */
187+ public final <C > P3 <A , B , C > append (C el ) {
188+ return P .p (_1 (), _2 (), el );
189+ }
190+
191+ /**
192+ * Creates a {@link P4} by adding the given element to the current {@link P2}
193+ *
194+ * @param el the element to append
195+ * @return A {@link P4} containing the original {@link P2} with the extra element added at the end
196+ */
197+ public final <C , D > P4 <A , B , C , D > append (P2 <C , D > el ) {
198+ return P .p (_1 (), _2 (), el ._1 (), el ._2 ());
199+ }
200+
201+ /**
202+ * Creates a {@link P5} by adding the given element to the current {@link P2}
203+ *
204+ * @param el the element to append
205+ * @return A {@link P5} containing the original {@link P2} with the extra element added at the end
206+ */
207+ public final <C , D , E > P5 <A , B , C , D , E > append (P3 <C , D , E > el ) {
208+ return P .p (_1 (), _2 (), el ._1 (), el ._2 (), el ._3 ());
209+ }
210+
211+ /**
212+ * Creates a {@link P6} by adding the given element to the current {@link P2}
213+ *
214+ * @param el the element to append
215+ * @return A {@link P6} containing the original {@link P2} with the extra element added at the end
216+ */
217+ public final <C , D , E , F > P6 <A , B , C , D , E , F > append (P4 <C , D , E , F > el ) {
218+ return P .p (_1 (), _2 (), el ._1 (), el ._2 (), el ._3 (), el ._4 ());
219+ }
220+
221+ /**
222+ * Creates a {@link P7} by adding the given element to the current {@link P2}
223+ *
224+ * @param el the element to append
225+ * @return A {@link P7} containing the original {@link P2} with the extra element added at the end
226+ */
227+ public final <C , D , E , F , G > P7 <A , B , C , D , E , F , G > append (P5 <C , D , E , F , G > el ) {
228+ return P .p (_1 (), _2 (), el ._1 (), el ._2 (), el ._3 (), el ._4 (), el ._5 ());
229+ }
230+
231+ /**
232+ * Creates a {@link P8} by adding the given element to the current {@link P2}
233+ *
234+ * @param el the element to append
235+ * @return A {@link P8} containing the original {@link P2} with the extra element added at the end
236+ */
237+ public final <C , D , E , F , G , H > P8 <A , B , C , D , E , F , G , H > append (P6 <C , D , E , F , G , H > el ) {
238+ return P .p (_1 (), _2 (), el ._1 (), el ._2 (), el ._3 (), el ._4 (), el ._5 (), el ._6 ());
239+ }
240+
241+
242+ /**
182243 * Provides a memoising P2 that remembers its values.
183244 *
184245 * @return A P2 that calls this P2 once for any given element and remembers the value for subsequent calls.
0 commit comments