From 865d9fe06434c6264cc48b9493d548a218e1cd2f Mon Sep 17 00:00:00 2001 From: "Dr. Carsten Leue" Date: Tue, 12 Sep 2023 22:10:33 +0200 Subject: [PATCH] fix: add missing alt methods and semigroup Signed-off-by: Dr. Carsten Leue --- context/readerioeither/gen.go | 203 +- context/readerioeither/generic/gen.go | 6595 +++++++++---------- context/readerioeither/generic/monoid.go | 56 + context/readerioeither/generic/reader.go | 8 + context/readerioeither/generic/semigroup.go | 29 + context/readerioeither/monoid.go | 36 + context/readerioeither/reader.go | 13 +- context/readerioeither/semigroup.go | 26 + coverage.bat | 2 + either/apply.go | 1 + either/gen.go | 947 ++- function/binds.go | 420 +- function/gen.go | 2080 +++--- identity/gen.go | 771 ++- internal/apply/gen.go | 2551 ++++--- internal/eithert/either.go | 10 + io/gen.go | 473 +- io/generic/gen.go | 1403 ++-- ioeither/gen.go | 517 +- ioeither/generic/gen.go | 1590 ++--- ioeither/generic/ioeither.go | 14 + ioeither/generic/monoid.go | 54 + ioeither/generic/semigroup.go | 27 + ioeither/ioeither.go | 13 +- ioeither/monoid.go | 42 + ioeither/monoid_test.go | 42 + ioeither/semigroup.go | 26 + iooption/gen.go | 473 +- iooption/generic/gen.go | 1405 ++-- monoid/alt.go | 58 + monoid/apply.go | 10 +- option/apply.go | 1 + option/gen.go | 948 +-- reader/gen.go | 25 +- reader/generic/gen.go | 111 +- readerioeither/gen.go | 47 +- readerioeither/generic/gen.go | 166 +- readerioeither/generic/reader.go | 14 + readerioeither/reader.go | 13 +- semigroup/alt.go | 28 + semigroup/apply.go | 6 +- test.bat | 3 + tuple/gen.go | 1814 ++--- 43 files changed, 11938 insertions(+), 11133 deletions(-) create mode 100644 context/readerioeither/generic/monoid.go create mode 100644 context/readerioeither/generic/semigroup.go create mode 100644 context/readerioeither/monoid.go create mode 100644 context/readerioeither/semigroup.go create mode 100644 coverage.bat create mode 100644 ioeither/generic/monoid.go create mode 100644 ioeither/generic/semigroup.go create mode 100644 ioeither/monoid.go create mode 100644 ioeither/monoid_test.go create mode 100644 ioeither/semigroup.go create mode 100644 monoid/alt.go create mode 100644 semigroup/alt.go create mode 100644 test.bat diff --git a/context/readerioeither/gen.go b/context/readerioeither/gen.go index aeef1ed..47d9a30 100644 --- a/context/readerioeither/gen.go +++ b/context/readerioeither/gen.go @@ -4,7 +4,6 @@ package readerioeither // This file was generated by robots at // 2023-09-12 13:44:14.1022311 +0200 CEST m=+0.017763401 - import ( "context" @@ -15,515 +14,515 @@ import ( // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize0] func Eitherize0[F ~func(context.Context) (R, error), R any](f F) func() ReaderIOEither[R] { - return G.Eitherize0[ReaderIOEither[R]](f) + return G.Eitherize0[ReaderIOEither[R]](f) } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize1] func Eitherize1[F ~func(context.Context, T0) (R, error), T0, R any](f F) func(T0) ReaderIOEither[R] { - return G.Eitherize1[ReaderIOEither[R]](f) + return G.Eitherize1[ReaderIOEither[R]](f) } // SequenceT1 converts 1 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceT1[T1 any](t1 ReaderIOEither[T1]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceT1[ReaderIOEither[T.Tuple1[T1]]](t1) + return G.SequenceT1[ReaderIOEither[T.Tuple1[T1]]](t1) } // SequenceSeqT1 converts 1 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceSeqT1[T1 any](t1 ReaderIOEither[T1]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceSeqT1[ReaderIOEither[T.Tuple1[T1]]](t1) + return G.SequenceSeqT1[ReaderIOEither[T.Tuple1[T1]]](t1) } // SequenceParT1 converts 1 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceParT1[T1 any](t1 ReaderIOEither[T1]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceParT1[ReaderIOEither[T.Tuple1[T1]]](t1) + return G.SequenceParT1[ReaderIOEither[T.Tuple1[T1]]](t1) } // SequenceTuple1 converts a [T.Tuple1] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceTuple1[T1 any](t T.Tuple1[ReaderIOEither[T1]]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceTuple1[ReaderIOEither[T.Tuple1[T1]]](t) + return G.SequenceTuple1[ReaderIOEither[T.Tuple1[T1]]](t) } // SequenceSeqTuple1 converts a [T.Tuple1] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceSeqTuple1[T1 any](t T.Tuple1[ReaderIOEither[T1]]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceSeqTuple1[ReaderIOEither[T.Tuple1[T1]]](t) + return G.SequenceSeqTuple1[ReaderIOEither[T.Tuple1[T1]]](t) } // SequenceParTuple1 converts a [T.Tuple1] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func SequenceParTuple1[T1 any](t T.Tuple1[ReaderIOEither[T1]]) ReaderIOEither[T.Tuple1[T1]] { - return G.SequenceParTuple1[ReaderIOEither[T.Tuple1[T1]]](t) + return G.SequenceParTuple1[ReaderIOEither[T.Tuple1[T1]]](t) } // TraverseTuple1 converts a [T.Tuple1] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func TraverseTuple1[F1 ~func(A1) ReaderIOEither[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) ReaderIOEither[T.Tuple1[T1]] { - return G.TraverseTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) + return G.TraverseTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) } // TraverseSeqTuple1 converts a [T.Tuple1] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func TraverseSeqTuple1[F1 ~func(A1) ReaderIOEither[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) ReaderIOEither[T.Tuple1[T1]] { - return G.TraverseSeqTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) + return G.TraverseSeqTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) } // TraverseParTuple1 converts a [T.Tuple1] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple1]. func TraverseParTuple1[F1 ~func(A1) ReaderIOEither[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) ReaderIOEither[T.Tuple1[T1]] { - return G.TraverseParTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) + return G.TraverseParTuple1[ReaderIOEither[T.Tuple1[T1]]](f1) } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize2] func Eitherize2[F ~func(context.Context, T0, T1) (R, error), T0, T1, R any](f F) func(T0, T1) ReaderIOEither[R] { - return G.Eitherize2[ReaderIOEither[R]](f) + return G.Eitherize2[ReaderIOEither[R]](f) } // SequenceT2 converts 2 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceT2[T1, T2 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) + return G.SequenceT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) } // SequenceSeqT2 converts 2 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceSeqT2[T1, T2 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceSeqT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) + return G.SequenceSeqT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) } // SequenceParT2 converts 2 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceParT2[T1, T2 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceParT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) + return G.SequenceParT2[ReaderIOEither[T.Tuple2[T1, T2]]](t1, t2) } // SequenceTuple2 converts a [T.Tuple2] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceTuple2[T1, T2 any](t T.Tuple2[ReaderIOEither[T1], ReaderIOEither[T2]]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) + return G.SequenceTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) } // SequenceSeqTuple2 converts a [T.Tuple2] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceSeqTuple2[T1, T2 any](t T.Tuple2[ReaderIOEither[T1], ReaderIOEither[T2]]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceSeqTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) + return G.SequenceSeqTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) } // SequenceParTuple2 converts a [T.Tuple2] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func SequenceParTuple2[T1, T2 any](t T.Tuple2[ReaderIOEither[T1], ReaderIOEither[T2]]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.SequenceParTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) + return G.SequenceParTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](t) } // TraverseTuple2 converts a [T.Tuple2] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func TraverseTuple2[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.TraverseTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) } // TraverseSeqTuple2 converts a [T.Tuple2] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func TraverseSeqTuple2[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.TraverseSeqTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseSeqTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) } // TraverseParTuple2 converts a [T.Tuple2] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple2]. func TraverseParTuple2[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) ReaderIOEither[T.Tuple2[T1, T2]] { - return G.TraverseParTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseParTuple2[ReaderIOEither[T.Tuple2[T1, T2]]](f1, f2) } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize3] func Eitherize3[F ~func(context.Context, T0, T1, T2) (R, error), T0, T1, T2, R any](f F) func(T0, T1, T2) ReaderIOEither[R] { - return G.Eitherize3[ReaderIOEither[R]](f) + return G.Eitherize3[ReaderIOEither[R]](f) } // SequenceT3 converts 3 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceT3[T1, T2, T3 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) + return G.SequenceT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) } // SequenceSeqT3 converts 3 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceSeqT3[T1, T2, T3 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceSeqT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) + return G.SequenceSeqT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) } // SequenceParT3 converts 3 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceParT3[T1, T2, T3 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceParT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) + return G.SequenceParT3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t1, t2, t3) } // SequenceTuple3 converts a [T.Tuple3] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3]]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) + return G.SequenceTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) } // SequenceSeqTuple3 converts a [T.Tuple3] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceSeqTuple3[T1, T2, T3 any](t T.Tuple3[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3]]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceSeqTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) + return G.SequenceSeqTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) } // SequenceParTuple3 converts a [T.Tuple3] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func SequenceParTuple3[T1, T2, T3 any](t T.Tuple3[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3]]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.SequenceParTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) + return G.SequenceParTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](t) } // TraverseTuple3 converts a [T.Tuple3] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func TraverseTuple3[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.TraverseTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // TraverseSeqTuple3 converts a [T.Tuple3] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func TraverseSeqTuple3[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.TraverseSeqTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseSeqTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // TraverseParTuple3 converts a [T.Tuple3] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple3]. func TraverseParTuple3[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) ReaderIOEither[T.Tuple3[T1, T2, T3]] { - return G.TraverseParTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseParTuple3[ReaderIOEither[T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize4] func Eitherize4[F ~func(context.Context, T0, T1, T2, T3) (R, error), T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) ReaderIOEither[R] { - return G.Eitherize4[ReaderIOEither[R]](f) + return G.Eitherize4[ReaderIOEither[R]](f) } // SequenceT4 converts 4 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceT4[T1, T2, T3, T4 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) + return G.SequenceT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) } // SequenceSeqT4 converts 4 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceSeqT4[T1, T2, T3, T4 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceSeqT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) + return G.SequenceSeqT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) } // SequenceParT4 converts 4 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceParT4[T1, T2, T3, T4 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceParT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) + return G.SequenceParT4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t1, t2, t3, t4) } // SequenceTuple4 converts a [T.Tuple4] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4]]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) + return G.SequenceTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) } // SequenceSeqTuple4 converts a [T.Tuple4] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceSeqTuple4[T1, T2, T3, T4 any](t T.Tuple4[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4]]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceSeqTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) + return G.SequenceSeqTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) } // SequenceParTuple4 converts a [T.Tuple4] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func SequenceParTuple4[T1, T2, T3, T4 any](t T.Tuple4[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4]]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceParTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) + return G.SequenceParTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](t) } // TraverseTuple4 converts a [T.Tuple4] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func TraverseTuple4[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // TraverseSeqTuple4 converts a [T.Tuple4] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func TraverseSeqTuple4[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseSeqTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseSeqTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // TraverseParTuple4 converts a [T.Tuple4] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple4]. func TraverseParTuple4[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) ReaderIOEither[T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseParTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseParTuple4[ReaderIOEither[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize5] func Eitherize5[F ~func(context.Context, T0, T1, T2, T3, T4) (R, error), T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) ReaderIOEither[R] { - return G.Eitherize5[ReaderIOEither[R]](f) + return G.Eitherize5[ReaderIOEither[R]](f) } // SequenceT5 converts 5 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceT5[T1, T2, T3, T4, T5 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) + return G.SequenceT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) } // SequenceSeqT5 converts 5 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceSeqT5[T1, T2, T3, T4, T5 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceSeqT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) + return G.SequenceSeqT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) } // SequenceParT5 converts 5 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceParT5[T1, T2, T3, T4, T5 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceParT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) + return G.SequenceParT5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t1, t2, t3, t4, t5) } // SequenceTuple5 converts a [T.Tuple5] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5]]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) + return G.SequenceTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) } // SequenceSeqTuple5 converts a [T.Tuple5] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceSeqTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5]]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceSeqTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) + return G.SequenceSeqTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) } // SequenceParTuple5 converts a [T.Tuple5] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func SequenceParTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5]]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceParTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) + return G.SequenceParTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](t) } // TraverseTuple5 converts a [T.Tuple5] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func TraverseTuple5[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // TraverseSeqTuple5 converts a [T.Tuple5] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func TraverseSeqTuple5[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseSeqTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseSeqTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // TraverseParTuple5 converts a [T.Tuple5] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple5]. func TraverseParTuple5[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseParTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseParTuple5[ReaderIOEither[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize6] func Eitherize6[F ~func(context.Context, T0, T1, T2, T3, T4, T5) (R, error), T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) ReaderIOEither[R] { - return G.Eitherize6[ReaderIOEither[R]](f) + return G.Eitherize6[ReaderIOEither[R]](f) } // SequenceT6 converts 6 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceT6[T1, T2, T3, T4, T5, T6 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) + return G.SequenceT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) } // SequenceSeqT6 converts 6 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceSeqT6[T1, T2, T3, T4, T5, T6 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceSeqT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) + return G.SequenceSeqT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) } // SequenceParT6 converts 6 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceParT6[T1, T2, T3, T4, T5, T6 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceParT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) + return G.SequenceParT6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t1, t2, t3, t4, t5, t6) } // SequenceTuple6 converts a [T.Tuple6] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6]]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) + return G.SequenceTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) } // SequenceSeqTuple6 converts a [T.Tuple6] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceSeqTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6]]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceSeqTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) + return G.SequenceSeqTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) } // SequenceParTuple6 converts a [T.Tuple6] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func SequenceParTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6]]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceParTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) + return G.SequenceParTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](t) } // TraverseTuple6 converts a [T.Tuple6] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func TraverseTuple6[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // TraverseSeqTuple6 converts a [T.Tuple6] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func TraverseSeqTuple6[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseSeqTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseSeqTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // TraverseParTuple6 converts a [T.Tuple6] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple6]. func TraverseParTuple6[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseParTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseParTuple6[ReaderIOEither[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize7] func Eitherize7[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6) (R, error), T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) ReaderIOEither[R] { - return G.Eitherize7[ReaderIOEither[R]](f) + return G.Eitherize7[ReaderIOEither[R]](f) } // SequenceT7 converts 7 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) } // SequenceSeqT7 converts 7 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceSeqT7[T1, T2, T3, T4, T5, T6, T7 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceSeqT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceSeqT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) } // SequenceParT7 converts 7 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceParT7[T1, T2, T3, T4, T5, T6, T7 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceParT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceParT7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t1, t2, t3, t4, t5, t6, t7) } // SequenceTuple7 converts a [T.Tuple7] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7]]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) + return G.SequenceTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) } // SequenceSeqTuple7 converts a [T.Tuple7] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceSeqTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7]]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceSeqTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) + return G.SequenceSeqTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) } // SequenceParTuple7 converts a [T.Tuple7] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func SequenceParTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7]]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceParTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) + return G.SequenceParTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](t) } // TraverseTuple7 converts a [T.Tuple7] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func TraverseTuple7[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // TraverseSeqTuple7 converts a [T.Tuple7] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func TraverseSeqTuple7[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseSeqTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseSeqTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // TraverseParTuple7 converts a [T.Tuple7] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple7]. func TraverseParTuple7[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseParTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseParTuple7[ReaderIOEither[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize8] func Eitherize8[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) ReaderIOEither[R] { - return G.Eitherize8[ReaderIOEither[R]](f) + return G.Eitherize8[ReaderIOEither[R]](f) } // SequenceT8 converts 8 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceSeqT8 converts 8 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceSeqT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceSeqT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceSeqT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceParT8 converts 8 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceParT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceParT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceParT8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceTuple8 converts a [T.Tuple8] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8]]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) + return G.SequenceTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) } // SequenceSeqTuple8 converts a [T.Tuple8] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceSeqTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8]]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceSeqTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) + return G.SequenceSeqTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) } // SequenceParTuple8 converts a [T.Tuple8] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func SequenceParTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8]]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceParTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) + return G.SequenceParTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](t) } // TraverseTuple8 converts a [T.Tuple8] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func TraverseTuple8[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // TraverseSeqTuple8 converts a [T.Tuple8] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func TraverseSeqTuple8[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseSeqTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseSeqTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // TraverseParTuple8 converts a [T.Tuple8] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple8]. func TraverseParTuple8[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseParTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseParTuple8[ReaderIOEither[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize9] func Eitherize9[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) ReaderIOEither[R] { - return G.Eitherize9[ReaderIOEither[R]](f) + return G.Eitherize9[ReaderIOEither[R]](f) } // SequenceT9 converts 9 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceSeqT9 converts 9 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceSeqT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceSeqT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceSeqT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceParT9 converts 9 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceParT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceParT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceParT9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceTuple9 converts a [T.Tuple9] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9]]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) + return G.SequenceTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) } // SequenceSeqTuple9 converts a [T.Tuple9] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceSeqTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9]]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceSeqTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) + return G.SequenceSeqTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) } // SequenceParTuple9 converts a [T.Tuple9] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func SequenceParTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9]]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceParTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) + return G.SequenceParTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](t) } // TraverseTuple9 converts a [T.Tuple9] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func TraverseTuple9[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // TraverseSeqTuple9 converts a [T.Tuple9] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func TraverseSeqTuple9[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseSeqTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseSeqTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // TraverseParTuple9 converts a [T.Tuple9] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple9]. func TraverseParTuple9[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseParTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseParTuple9[ReaderIOEither[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [ReaderIOEither[R]] // The inverse function is [Uneitherize10] func Eitherize10[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) ReaderIOEither[R] { - return G.Eitherize10[ReaderIOEither[R]](f) + return G.Eitherize10[ReaderIOEither[R]](f) } // SequenceT10 converts 10 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9], t10 ReaderIOEither[T10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceSeqT10 converts 10 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceSeqT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9], t10 ReaderIOEither[T10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceSeqT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceSeqT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceParT10 converts 10 [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceParT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 ReaderIOEither[T1], t2 ReaderIOEither[T2], t3 ReaderIOEither[T3], t4 ReaderIOEither[T4], t5 ReaderIOEither[T5], t6 ReaderIOEither[T6], t7 ReaderIOEither[T7], t8 ReaderIOEither[T8], t9 ReaderIOEither[T9], t10 ReaderIOEither[T10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceParT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceParT10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceTuple10 converts a [T.Tuple10] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9], ReaderIOEither[T10]]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) + return G.SequenceTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) } // SequenceSeqTuple10 converts a [T.Tuple10] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceSeqTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9], ReaderIOEither[T10]]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceSeqTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) + return G.SequenceSeqTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) } // SequenceParTuple10 converts a [T.Tuple10] of [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func SequenceParTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[ReaderIOEither[T1], ReaderIOEither[T2], ReaderIOEither[T3], ReaderIOEither[T4], ReaderIOEither[T5], ReaderIOEither[T6], ReaderIOEither[T7], ReaderIOEither[T8], ReaderIOEither[T9], ReaderIOEither[T10]]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceParTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) + return G.SequenceParTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](t) } // TraverseTuple10 converts a [T.Tuple10] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func TraverseTuple10[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], F10 ~func(A10) ReaderIOEither[T10], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } // TraverseSeqTuple10 converts a [T.Tuple10] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func TraverseSeqTuple10[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], F10 ~func(A10) ReaderIOEither[T10], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseSeqTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseSeqTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } // TraverseParTuple10 converts a [T.Tuple10] of [A] via transformer functions transforming [A] to a [ReaderIOEither] into a [ReaderIOEither] of a [T.Tuple10]. func TraverseParTuple10[F1 ~func(A1) ReaderIOEither[T1], F2 ~func(A2) ReaderIOEither[T2], F3 ~func(A3) ReaderIOEither[T3], F4 ~func(A4) ReaderIOEither[T4], F5 ~func(A5) ReaderIOEither[T5], F6 ~func(A6) ReaderIOEither[T6], F7 ~func(A7) ReaderIOEither[T7], F8 ~func(A8) ReaderIOEither[T8], F9 ~func(A9) ReaderIOEither[T9], F10 ~func(A10) ReaderIOEither[T10], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseParTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseParTuple10[ReaderIOEither[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } diff --git a/context/readerioeither/generic/gen.go b/context/readerioeither/generic/gen.go index 06a48f0..3d0689a 100644 --- a/context/readerioeither/generic/gen.go +++ b/context/readerioeither/generic/gen.go @@ -4,3753 +4,3752 @@ package generic // This file was generated by robots at // 2023-09-12 13:44:14.1036885 +0200 CEST m=+0.019220801 - import ( "context" E "github.com/IBM/fp-go/either" - RE "github.com/IBM/fp-go/readerioeither/generic" A "github.com/IBM/fp-go/internal/apply" + RE "github.com/IBM/fp-go/readerioeither/generic" T "github.com/IBM/fp-go/tuple" ) // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GRA] // The inverse function is [Uneitherize0] func Eitherize0[GRA ~func(context.Context) GIOA, F ~func(context.Context) (R, error), GIOA ~func() E.Either[error, R], R any](f F) func() GRA { - return RE.Eitherize0[GRA](f) + return RE.Eitherize0[GRA](f) } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GRA] // The inverse function is [Uneitherize1] func Eitherize1[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0) (R, error), GIOA ~func() E.Either[error, R], T0, R any](f F) func(T0) GRA { - return RE.Eitherize1[GRA](f) + return RE.Eitherize1[GRA](f) } // SequenceT1 converts 1 readers into a reader of a [T.Tuple1]. func SequenceT1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any]( - t1 GR_T1, + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any]( + t1 GR_T1, ) GR_TUPLE1 { - return A.SequenceT1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t1, - ) + return A.SequenceT1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t1, + ) } // SequenceSeqT1 converts 1 readers into a reader of a [T.Tuple1]. func SequenceSeqT1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any]( - t1 GR_T1, + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any]( + t1 GR_T1, ) GR_TUPLE1 { - return A.SequenceT1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t1, - ) + return A.SequenceT1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t1, + ) } // SequenceParT1 converts 1 readers into a reader of a [T.Tuple1]. func SequenceParT1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any]( - t1 GR_T1, + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any]( + t1 GR_T1, ) GR_TUPLE1 { - return A.SequenceT1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t1, - ) + return A.SequenceT1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t1, + ) } // SequenceTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func SequenceTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { - return A.SequenceTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t, - ) + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { + return A.SequenceTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t, + ) } // SequenceSeqTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func SequenceSeqTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { - return A.SequenceTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t, - ) + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { + return A.SequenceTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t, + ) } // SequenceParTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func SequenceParTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { - return A.SequenceTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - t, - ) + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + T1 any](t T.Tuple1[GR_T1]) GR_TUPLE1 { + return A.SequenceTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + t, + ) } // TraverseTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func TraverseTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - F1 ~func(A1) GR_T1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - A1, - T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { - return func(t T.Tuple1[A1]) GR_TUPLE1 { - return A.TraverseTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - f1, - t, - ) - } + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + F1 ~func(A1) GR_T1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + A1, + T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { + return func(t T.Tuple1[A1]) GR_TUPLE1 { + return A.TraverseTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + f1, + t, + ) + } } // TraverseSeqTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func TraverseSeqTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - F1 ~func(A1) GR_T1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - A1, - T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { - return func(t T.Tuple1[A1]) GR_TUPLE1 { - return A.TraverseTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - f1, - t, - ) - } + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + F1 ~func(A1) GR_T1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + A1, + T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { + return func(t T.Tuple1[A1]) GR_TUPLE1 { + return A.TraverseTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + f1, + t, + ) + } } // TraverseParTuple1 converts a [T.Tuple1] of readers into a reader of a [T.Tuple1]. func TraverseParTuple1[ - GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, - F1 ~func(A1) GR_T1, - GR_T1 ~func(context.Context) GIO_T1, - GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], - GIO_T1 ~func() E.Either[error, T1], - A1, - T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { - return func(t T.Tuple1[A1]) GR_TUPLE1 { - return A.TraverseTuple1( - Map[GR_T1, GR_TUPLE1, GIO_T1], - f1, - t, - ) - } + GR_TUPLE1 ~func(context.Context) GIO_TUPLE1, + F1 ~func(A1) GR_T1, + GR_T1 ~func(context.Context) GIO_T1, + GIO_TUPLE1 ~func() E.Either[error, T.Tuple1[T1]], + GIO_T1 ~func() E.Either[error, T1], + A1, + T1 any](f1 F1) func(T.Tuple1[A1]) GR_TUPLE1 { + return func(t T.Tuple1[A1]) GR_TUPLE1 { + return A.TraverseTuple1( + Map[GR_T1, GR_TUPLE1, GIO_T1], + f1, + t, + ) + } } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GRA] // The inverse function is [Uneitherize2] func Eitherize2[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1) (R, error), GIOA ~func() E.Either[error, R], T0, T1, R any](f F) func(T0, T1) GRA { - return RE.Eitherize2[GRA](f) + return RE.Eitherize2[GRA](f) } // SequenceT2 converts 2 readers into a reader of a [T.Tuple2]. func SequenceT2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any]( - t1 GR_T1, - t2 GR_T2, + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any]( + t1 GR_T1, + t2 GR_T2, ) GR_TUPLE2 { - return A.SequenceT2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t1, - t2, - ) + return A.SequenceT2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t1, + t2, + ) } // SequenceSeqT2 converts 2 readers into a reader of a [T.Tuple2]. func SequenceSeqT2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any]( - t1 GR_T1, - t2 GR_T2, + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any]( + t1 GR_T1, + t2 GR_T2, ) GR_TUPLE2 { - return A.SequenceT2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t1, - t2, - ) + return A.SequenceT2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t1, + t2, + ) } // SequenceParT2 converts 2 readers into a reader of a [T.Tuple2]. func SequenceParT2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any]( - t1 GR_T1, - t2 GR_T2, + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any]( + t1 GR_T1, + t2 GR_T2, ) GR_TUPLE2 { - return A.SequenceT2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t1, - t2, - ) + return A.SequenceT2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t1, + t2, + ) } // SequenceTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func SequenceTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { - return A.SequenceTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t, - ) + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { + return A.SequenceTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t, + ) } // SequenceSeqTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func SequenceSeqTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { - return A.SequenceTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t, - ) + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { + return A.SequenceTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t, + ) } // SequenceParTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func SequenceParTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - T1, - T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { - return A.SequenceTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - t, - ) + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + T1, + T2 any](t T.Tuple2[GR_T1, GR_T2]) GR_TUPLE2 { + return A.SequenceTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + t, + ) } // TraverseTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func TraverseTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - A1, - T1, - A2, - T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { - return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { - return A.TraverseTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - f1, - f2, - t, - ) - } + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + A1, + T1, + A2, + T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { + return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { + return A.TraverseTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + Ap[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + f1, + f2, + t, + ) + } } // TraverseSeqTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func TraverseSeqTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - A1, - T1, - A2, - T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { - return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { - return A.TraverseTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - f1, - f2, - t, - ) - } + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + A1, + T1, + A2, + T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { + return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { + return A.TraverseTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApSeq[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + f1, + f2, + t, + ) + } } // TraverseParTuple2 converts a [T.Tuple2] of readers into a reader of a [T.Tuple2]. func TraverseParTuple2[ - GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - A1, - T1, - A2, - T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { - return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { - return A.TraverseTuple2( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], - ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], - f1, - f2, - t, - ) - } + GR_TUPLE2 ~func(context.Context) GIO_TUPLE2, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GIO_TUPLE2 ~func() E.Either[error, T.Tuple2[T1, T2]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + A1, + T1, + A2, + T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) GR_TUPLE2 { + return func(t T.Tuple2[A1, A2]) GR_TUPLE2 { + return A.TraverseTuple2( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GIO_T1], + ApPar[GR_TUPLE2, func(context.Context) func() E.Either[error, func(T2) T.Tuple2[T1, T2]], GR_T2], + f1, + f2, + t, + ) + } } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GRA] // The inverse function is [Uneitherize3] func Eitherize3[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, R any](f F) func(T0, T1, T2) GRA { - return RE.Eitherize3[GRA](f) + return RE.Eitherize3[GRA](f) } // SequenceT3 converts 3 readers into a reader of a [T.Tuple3]. func SequenceT3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, ) GR_TUPLE3 { - return A.SequenceT3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t1, + t2, + t3, + ) } // SequenceSeqT3 converts 3 readers into a reader of a [T.Tuple3]. func SequenceSeqT3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, ) GR_TUPLE3 { - return A.SequenceT3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t1, + t2, + t3, + ) } // SequenceParT3 converts 3 readers into a reader of a [T.Tuple3]. func SequenceParT3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, ) GR_TUPLE3 { - return A.SequenceT3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func SequenceTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { - return A.SequenceTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t, - ) + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { + return A.SequenceTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t, + ) } // SequenceSeqTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func SequenceSeqTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { - return A.SequenceTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t, - ) + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { + return A.SequenceTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t, + ) } // SequenceParTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func SequenceParTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - T1, - T2, - T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { - return A.SequenceTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - t, - ) + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + T1, + T2, + T3 any](t T.Tuple3[GR_T1, GR_T2, GR_T3]) GR_TUPLE3 { + return A.SequenceTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + t, + ) } // TraverseTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func TraverseTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - A1, - T1, - A2, - T2, - A3, - T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return A.TraverseTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - f1, - f2, - f3, - t, - ) - } + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + A1, + T1, + A2, + T2, + A3, + T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return A.TraverseTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + Ap[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + f1, + f2, + f3, + t, + ) + } } // TraverseSeqTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func TraverseSeqTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - A1, - T1, - A2, - T2, - A3, - T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return A.TraverseTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - f1, - f2, - f3, - t, - ) - } + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + A1, + T1, + A2, + T2, + A3, + T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return A.TraverseTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApSeq[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + f1, + f2, + f3, + t, + ) + } } // TraverseParTuple3 converts a [T.Tuple3] of readers into a reader of a [T.Tuple3]. func TraverseParTuple3[ - GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - A1, - T1, - A2, - T2, - A3, - T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { - return A.TraverseTuple3( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], - ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], - f1, - f2, - f3, - t, - ) - } + GR_TUPLE3 ~func(context.Context) GIO_TUPLE3, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GIO_TUPLE3 ~func() E.Either[error, T.Tuple3[T1, T2, T3]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + A1, + T1, + A2, + T2, + A3, + T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) GR_TUPLE3 { + return A.TraverseTuple3( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], func(context.Context) func() E.Either[error, func(T2) func(T3) T.Tuple3[T1, T2, T3]], GR_T2], + ApPar[GR_TUPLE3, func(context.Context) func() E.Either[error, func(T3) T.Tuple3[T1, T2, T3]], GR_T3], + f1, + f2, + f3, + t, + ) + } } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GRA] // The inverse function is [Uneitherize4] func Eitherize4[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) GRA { - return RE.Eitherize4[GRA](f) + return RE.Eitherize4[GRA](f) } // SequenceT4 converts 4 readers into a reader of a [T.Tuple4]. func SequenceT4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, ) GR_TUPLE4 { - return A.SequenceT4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t1, + t2, + t3, + t4, + ) } // SequenceSeqT4 converts 4 readers into a reader of a [T.Tuple4]. func SequenceSeqT4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, ) GR_TUPLE4 { - return A.SequenceT4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t1, + t2, + t3, + t4, + ) } // SequenceParT4 converts 4 readers into a reader of a [T.Tuple4]. func SequenceParT4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, ) GR_TUPLE4 { - return A.SequenceT4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func SequenceTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { - return A.SequenceTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t, - ) + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { + return A.SequenceTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t, + ) } // SequenceSeqTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func SequenceSeqTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { - return A.SequenceTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t, - ) + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { + return A.SequenceTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t, + ) } // SequenceParTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func SequenceParTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - T1, - T2, - T3, - T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { - return A.SequenceTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - t, - ) + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + T1, + T2, + T3, + T4 any](t T.Tuple4[GR_T1, GR_T2, GR_T3, GR_T4]) GR_TUPLE4 { + return A.SequenceTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + t, + ) } // TraverseTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func TraverseTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return A.TraverseTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - f1, - f2, - f3, - f4, - t, - ) - } + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return A.TraverseTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + Ap[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + f1, + f2, + f3, + f4, + t, + ) + } } // TraverseSeqTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func TraverseSeqTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return A.TraverseTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - f1, - f2, - f3, - f4, - t, - ) - } + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return A.TraverseTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApSeq[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + f1, + f2, + f3, + f4, + t, + ) + } } // TraverseParTuple4 converts a [T.Tuple4] of readers into a reader of a [T.Tuple4]. func TraverseParTuple4[ - GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { - return A.TraverseTuple4( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], - ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], - f1, - f2, - f3, - f4, - t, - ) - } + GR_TUPLE4 ~func(context.Context) GIO_TUPLE4, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GIO_TUPLE4 ~func() E.Either[error, T.Tuple4[T1, T2, T3, T4]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) GR_TUPLE4 { + return A.TraverseTuple4( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], func(context.Context) func() E.Either[error, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T3], + ApPar[GR_TUPLE4, func(context.Context) func() E.Either[error, func(T4) T.Tuple4[T1, T2, T3, T4]], GR_T4], + f1, + f2, + f3, + f4, + t, + ) + } } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GRA] // The inverse function is [Uneitherize5] func Eitherize5[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) GRA { - return RE.Eitherize5[GRA](f) + return RE.Eitherize5[GRA](f) } // SequenceT5 converts 5 readers into a reader of a [T.Tuple5]. func SequenceT5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, ) GR_TUPLE5 { - return A.SequenceT5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceSeqT5 converts 5 readers into a reader of a [T.Tuple5]. func SequenceSeqT5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, ) GR_TUPLE5 { - return A.SequenceT5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceParT5 converts 5 readers into a reader of a [T.Tuple5]. func SequenceParT5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, ) GR_TUPLE5 { - return A.SequenceT5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func SequenceTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { - return A.SequenceTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t, - ) + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { + return A.SequenceTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t, + ) } // SequenceSeqTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func SequenceSeqTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { - return A.SequenceTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t, - ) + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { + return A.SequenceTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t, + ) } // SequenceParTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func SequenceParTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - T1, - T2, - T3, - T4, - T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { - return A.SequenceTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - t, - ) + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + T1, + T2, + T3, + T4, + T5 any](t T.Tuple5[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5]) GR_TUPLE5 { + return A.SequenceTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + t, + ) } // TraverseTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func TraverseTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return A.TraverseTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return A.TraverseTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + Ap[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // TraverseSeqTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func TraverseSeqTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return A.TraverseTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return A.TraverseTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApSeq[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // TraverseParTuple5 converts a [T.Tuple5] of readers into a reader of a [T.Tuple5]. func TraverseParTuple5[ - GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { - return A.TraverseTuple5( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], - ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } + GR_TUPLE5 ~func(context.Context) GIO_TUPLE5, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GIO_TUPLE5 ~func() E.Either[error, T.Tuple5[T1, T2, T3, T4, T5]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) GR_TUPLE5 { + return A.TraverseTuple5( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func(context.Context) func() E.Either[error, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T4], + ApPar[GR_TUPLE5, func(context.Context) func() E.Either[error, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], GR_T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GRA] // The inverse function is [Uneitherize6] func Eitherize6[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4, T5) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) GRA { - return RE.Eitherize6[GRA](f) + return RE.Eitherize6[GRA](f) } // SequenceT6 converts 6 readers into a reader of a [T.Tuple6]. func SequenceT6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, ) GR_TUPLE6 { - return A.SequenceT6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceSeqT6 converts 6 readers into a reader of a [T.Tuple6]. func SequenceSeqT6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, ) GR_TUPLE6 { - return A.SequenceT6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceParT6 converts 6 readers into a reader of a [T.Tuple6]. func SequenceParT6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, ) GR_TUPLE6 { - return A.SequenceT6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func SequenceTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { - return A.SequenceTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t, - ) + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { + return A.SequenceTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t, + ) } // SequenceSeqTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func SequenceSeqTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { - return A.SequenceTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t, - ) + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { + return A.SequenceTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t, + ) } // SequenceParTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func SequenceParTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - T1, - T2, - T3, - T4, - T5, - T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { - return A.SequenceTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - t, - ) + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + T1, + T2, + T3, + T4, + T5, + T6 any](t T.Tuple6[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6]) GR_TUPLE6 { + return A.SequenceTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + t, + ) } // TraverseTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func TraverseTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return A.TraverseTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return A.TraverseTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + Ap[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // TraverseSeqTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func TraverseSeqTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return A.TraverseTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return A.TraverseTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApSeq[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // TraverseParTuple6 converts a [T.Tuple6] of readers into a reader of a [T.Tuple6]. func TraverseParTuple6[ - GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { - return A.TraverseTuple6( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], - ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } + GR_TUPLE6 ~func(context.Context) GIO_TUPLE6, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GIO_TUPLE6 ~func() E.Either[error, T.Tuple6[T1, T2, T3, T4, T5, T6]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) GR_TUPLE6 { + return A.TraverseTuple6( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func(context.Context) func() E.Either[error, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T5], + ApPar[GR_TUPLE6, func(context.Context) func() E.Either[error, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], GR_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GRA] // The inverse function is [Uneitherize7] func Eitherize7[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) GRA { - return RE.Eitherize7[GRA](f) + return RE.Eitherize7[GRA](f) } // SequenceT7 converts 7 readers into a reader of a [T.Tuple7]. func SequenceT7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, ) GR_TUPLE7 { - return A.SequenceT7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceSeqT7 converts 7 readers into a reader of a [T.Tuple7]. func SequenceSeqT7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, ) GR_TUPLE7 { - return A.SequenceT7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceParT7 converts 7 readers into a reader of a [T.Tuple7]. func SequenceParT7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, ) GR_TUPLE7 { - return A.SequenceT7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func SequenceTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { - return A.SequenceTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t, - ) + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { + return A.SequenceTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t, + ) } // SequenceSeqTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func SequenceSeqTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { - return A.SequenceTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t, - ) + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { + return A.SequenceTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t, + ) } // SequenceParTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func SequenceParTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - T1, - T2, - T3, - T4, - T5, - T6, - T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { - return A.SequenceTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - t, - ) + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + T1, + T2, + T3, + T4, + T5, + T6, + T7 any](t T.Tuple7[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7]) GR_TUPLE7 { + return A.SequenceTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + t, + ) } // TraverseTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func TraverseTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return A.TraverseTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return A.TraverseTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + Ap[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // TraverseSeqTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func TraverseSeqTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return A.TraverseTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return A.TraverseTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApSeq[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // TraverseParTuple7 converts a [T.Tuple7] of readers into a reader of a [T.Tuple7]. func TraverseParTuple7[ - GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { - return A.TraverseTuple7( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], - ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } + GR_TUPLE7 ~func(context.Context) GIO_TUPLE7, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GIO_TUPLE7 ~func() E.Either[error, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) GR_TUPLE7 { + return A.TraverseTuple7( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func(context.Context) func() E.Either[error, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T6], + ApPar[GR_TUPLE7, func(context.Context) func() E.Either[error, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], GR_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GRA] // The inverse function is [Uneitherize8] func Eitherize8[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) GRA { - return RE.Eitherize8[GRA](f) + return RE.Eitherize8[GRA](f) } // SequenceT8 converts 8 readers into a reader of a [T.Tuple8]. func SequenceT8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, ) GR_TUPLE8 { - return A.SequenceT8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceSeqT8 converts 8 readers into a reader of a [T.Tuple8]. func SequenceSeqT8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, ) GR_TUPLE8 { - return A.SequenceT8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceParT8 converts 8 readers into a reader of a [T.Tuple8]. func SequenceParT8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, ) GR_TUPLE8 { - return A.SequenceT8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func SequenceTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { - return A.SequenceTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t, - ) + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { + return A.SequenceTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t, + ) } // SequenceSeqTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func SequenceSeqTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { - return A.SequenceTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t, - ) + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { + return A.SequenceTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t, + ) } // SequenceParTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func SequenceParTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { - return A.SequenceTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - t, - ) + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8 any](t T.Tuple8[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8]) GR_TUPLE8 { + return A.SequenceTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + t, + ) } // TraverseTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func TraverseTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return A.TraverseTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return A.TraverseTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + Ap[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // TraverseSeqTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func TraverseSeqTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return A.TraverseTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return A.TraverseTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApSeq[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // TraverseParTuple8 converts a [T.Tuple8] of readers into a reader of a [T.Tuple8]. func TraverseParTuple8[ - GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { - return A.TraverseTuple8( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], - ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } + GR_TUPLE8 ~func(context.Context) GIO_TUPLE8, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GIO_TUPLE8 ~func() E.Either[error, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) GR_TUPLE8 { + return A.TraverseTuple8( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func(context.Context) func() E.Either[error, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T7], + ApPar[GR_TUPLE8, func(context.Context) func() E.Either[error, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], GR_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GRA] // The inverse function is [Uneitherize9] func Eitherize9[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) GRA { - return RE.Eitherize9[GRA](f) + return RE.Eitherize9[GRA](f) } // SequenceT9 converts 9 readers into a reader of a [T.Tuple9]. func SequenceT9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, ) GR_TUPLE9 { - return A.SequenceT9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceSeqT9 converts 9 readers into a reader of a [T.Tuple9]. func SequenceSeqT9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, ) GR_TUPLE9 { - return A.SequenceT9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceParT9 converts 9 readers into a reader of a [T.Tuple9]. func SequenceParT9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, ) GR_TUPLE9 { - return A.SequenceT9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func SequenceTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { - return A.SequenceTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t, - ) + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { + return A.SequenceTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t, + ) } // SequenceSeqTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func SequenceSeqTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { - return A.SequenceTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t, - ) + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { + return A.SequenceTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t, + ) } // SequenceParTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func SequenceParTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { - return A.SequenceTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - t, - ) + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9 any](t T.Tuple9[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9]) GR_TUPLE9 { + return A.SequenceTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + t, + ) } // TraverseTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func TraverseTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return A.TraverseTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return A.TraverseTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + Ap[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // TraverseSeqTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func TraverseSeqTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return A.TraverseTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return A.TraverseTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApSeq[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // TraverseParTuple9 converts a [T.Tuple9] of readers into a reader of a [T.Tuple9]. func TraverseParTuple9[ - GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { - return A.TraverseTuple9( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], - ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } + GR_TUPLE9 ~func(context.Context) GIO_TUPLE9, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GIO_TUPLE9 ~func() E.Either[error, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) GR_TUPLE9 { + return A.TraverseTuple9( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func(context.Context) func() E.Either[error, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T8], + ApPar[GR_TUPLE9, func(context.Context) func() E.Either[error, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], GR_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GRA] // The inverse function is [Uneitherize10] func Eitherize10[GRA ~func(context.Context) GIOA, F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) GRA { - return RE.Eitherize10[GRA](f) + return RE.Eitherize10[GRA](f) } // SequenceT10 converts 10 readers into a reader of a [T.Tuple10]. func SequenceT10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, - t10 GR_T10, + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, + t10 GR_T10, ) GR_TUPLE10 { - return A.SequenceT10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceSeqT10 converts 10 readers into a reader of a [T.Tuple10]. func SequenceSeqT10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, - t10 GR_T10, + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, + t10 GR_T10, ) GR_TUPLE10 { - return A.SequenceT10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceParT10 converts 10 readers into a reader of a [T.Tuple10]. func SequenceParT10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any]( - t1 GR_T1, - t2 GR_T2, - t3 GR_T3, - t4 GR_T4, - t5 GR_T5, - t6 GR_T6, - t7 GR_T7, - t8 GR_T8, - t9 GR_T9, - t10 GR_T10, + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any]( + t1 GR_T1, + t2 GR_T2, + t3 GR_T3, + t4 GR_T4, + t5 GR_T5, + t6 GR_T6, + t7 GR_T7, + t8 GR_T8, + t9 GR_T9, + t10 GR_T10, ) GR_TUPLE10 { - return A.SequenceT10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func SequenceTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { - return A.SequenceTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t, - ) + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { + return A.SequenceTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t, + ) } // SequenceSeqTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func SequenceSeqTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { - return A.SequenceTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t, - ) + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { + return A.SequenceTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t, + ) } // SequenceParTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func SequenceParTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { - return A.SequenceTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - t, - ) + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10 any](t T.Tuple10[GR_T1, GR_T2, GR_T3, GR_T4, GR_T5, GR_T6, GR_T7, GR_T8, GR_T9, GR_T10]) GR_TUPLE10 { + return A.SequenceTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + t, + ) } // TraverseTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func TraverseTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - F10 ~func(A10) GR_T10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9, - A10, - T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return A.TraverseTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + F10 ~func(A10) GR_T10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9, + A10, + T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return A.TraverseTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + Ap[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + Ap[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + Ap[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + Ap[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + Ap[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + Ap[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + Ap[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + Ap[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + Ap[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } // TraverseSeqTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func TraverseSeqTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - F10 ~func(A10) GR_T10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9, - A10, - T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return A.TraverseTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + F10 ~func(A10) GR_T10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9, + A10, + T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return A.TraverseTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApSeq[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApSeq[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApSeq[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApSeq[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApSeq[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApSeq[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApSeq[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApSeq[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApSeq[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } // TraverseParTuple10 converts a [T.Tuple10] of readers into a reader of a [T.Tuple10]. func TraverseParTuple10[ - GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, - F1 ~func(A1) GR_T1, - F2 ~func(A2) GR_T2, - F3 ~func(A3) GR_T3, - F4 ~func(A4) GR_T4, - F5 ~func(A5) GR_T5, - F6 ~func(A6) GR_T6, - F7 ~func(A7) GR_T7, - F8 ~func(A8) GR_T8, - F9 ~func(A9) GR_T9, - F10 ~func(A10) GR_T10, - GR_T1 ~func(context.Context) GIO_T1, - GR_T2 ~func(context.Context) GIO_T2, - GR_T3 ~func(context.Context) GIO_T3, - GR_T4 ~func(context.Context) GIO_T4, - GR_T5 ~func(context.Context) GIO_T5, - GR_T6 ~func(context.Context) GIO_T6, - GR_T7 ~func(context.Context) GIO_T7, - GR_T8 ~func(context.Context) GIO_T8, - GR_T9 ~func(context.Context) GIO_T9, - GR_T10 ~func(context.Context) GIO_T10, - GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - GIO_T1 ~func() E.Either[error, T1], - GIO_T2 ~func() E.Either[error, T2], - GIO_T3 ~func() E.Either[error, T3], - GIO_T4 ~func() E.Either[error, T4], - GIO_T5 ~func() E.Either[error, T5], - GIO_T6 ~func() E.Either[error, T6], - GIO_T7 ~func() E.Either[error, T7], - GIO_T8 ~func() E.Either[error, T8], - GIO_T9 ~func() E.Either[error, T9], - GIO_T10 ~func() E.Either[error, T10], - A1, - T1, - A2, - T2, - A3, - T3, - A4, - T4, - A5, - T5, - A6, - T6, - A7, - T7, - A8, - T8, - A9, - T9, - A10, - T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { - return A.TraverseTuple10( - Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], - ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], - ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], - ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], - ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], - ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], - ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], - ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], - ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], - ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } + GR_TUPLE10 ~func(context.Context) GIO_TUPLE10, + F1 ~func(A1) GR_T1, + F2 ~func(A2) GR_T2, + F3 ~func(A3) GR_T3, + F4 ~func(A4) GR_T4, + F5 ~func(A5) GR_T5, + F6 ~func(A6) GR_T6, + F7 ~func(A7) GR_T7, + F8 ~func(A8) GR_T8, + F9 ~func(A9) GR_T9, + F10 ~func(A10) GR_T10, + GR_T1 ~func(context.Context) GIO_T1, + GR_T2 ~func(context.Context) GIO_T2, + GR_T3 ~func(context.Context) GIO_T3, + GR_T4 ~func(context.Context) GIO_T4, + GR_T5 ~func(context.Context) GIO_T5, + GR_T6 ~func(context.Context) GIO_T6, + GR_T7 ~func(context.Context) GIO_T7, + GR_T8 ~func(context.Context) GIO_T8, + GR_T9 ~func(context.Context) GIO_T9, + GR_T10 ~func(context.Context) GIO_T10, + GIO_TUPLE10 ~func() E.Either[error, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + GIO_T1 ~func() E.Either[error, T1], + GIO_T2 ~func() E.Either[error, T2], + GIO_T3 ~func() E.Either[error, T3], + GIO_T4 ~func() E.Either[error, T4], + GIO_T5 ~func() E.Either[error, T5], + GIO_T6 ~func() E.Either[error, T6], + GIO_T7 ~func() E.Either[error, T7], + GIO_T8 ~func() E.Either[error, T8], + GIO_T9 ~func() E.Either[error, T9], + GIO_T10 ~func() E.Either[error, T10], + A1, + T1, + A2, + T2, + A3, + T3, + A4, + T4, + A5, + T5, + A6, + T6, + A7, + T7, + A8, + T8, + A9, + T9, + A10, + T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) GR_TUPLE10 { + return A.TraverseTuple10( + Map[GR_T1, func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GIO_T1], + ApPar[func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T2], + ApPar[func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T3], + ApPar[func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T4], + ApPar[func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T5], + ApPar[func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T6], + ApPar[func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T7], + ApPar[func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T8], + ApPar[func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func(context.Context) func() E.Either[error, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T9], + ApPar[GR_TUPLE10, func(context.Context) func() E.Either[error, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], GR_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } diff --git a/context/readerioeither/generic/monoid.go b/context/readerioeither/generic/monoid.go new file mode 100644 index 0000000..78e3e68 --- /dev/null +++ b/context/readerioeither/generic/monoid.go @@ -0,0 +1,56 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package generic + +import ( + "context" + + ET "github.com/IBM/fp-go/either" + M "github.com/IBM/fp-go/monoid" +) + +func ApplicativeMonoid[GRA ~func(context.Context) GIOA, GRFA ~func(context.Context) GIOFA, GIOA ~func() ET.Either[error, A], GIOFA ~func() ET.Either[error, func(A) A], A any]( + m M.Monoid[A], +) M.Monoid[GRA] { + return M.ApplicativeMonoid( + Of[GRA], + MonadMap[GRA, GRFA], + MonadAp[GRA, GRA, GRFA], + m, + ) +} + +func ApplicativeMonoidSeq[GRA ~func(context.Context) GIOA, GRFA ~func(context.Context) GIOFA, GIOA ~func() ET.Either[error, A], GIOFA ~func() ET.Either[error, func(A) A], A any]( + m M.Monoid[A], +) M.Monoid[GRA] { + return M.ApplicativeMonoid( + Of[GRA], + MonadMap[GRA, GRFA], + MonadApSeq[GRA, GRA, GRFA], + m, + ) +} + +func ApplicativeMonoidPar[GRA ~func(context.Context) GIOA, GRFA ~func(context.Context) GIOFA, GIOA ~func() ET.Either[error, A], GIOFA ~func() ET.Either[error, func(A) A], A any]( + m M.Monoid[A], +) M.Monoid[GRA] { + return M.ApplicativeMonoid( + Of[GRA], + MonadMap[GRA, GRFA], + MonadApPar[GRA, GRA, GRFA], + m, + ) +} diff --git a/context/readerioeither/generic/reader.go b/context/readerioeither/generic/reader.go index 10bd149..a74fac8 100644 --- a/context/readerioeither/generic/reader.go +++ b/context/readerioeither/generic/reader.go @@ -543,3 +543,11 @@ func TryCatch[ A any](f func(context.Context) func() (A, error)) GRA { return RIE.TryCatch[GRA](f, ER.IdentityError) } + +func MonadAlt[LAZY ~func() GEA, GEA ~func(context.Context) GIOA, GIOA ~func() E.Either[error, A], A any](first GEA, second LAZY) GEA { + return RIE.MonadAlt(first, second) +} + +func Alt[LAZY ~func() GEA, GEA ~func(context.Context) GIOA, GIOA ~func() E.Either[error, A], A any](second LAZY) func(GEA) GEA { + return RIE.Alt(second) +} diff --git a/context/readerioeither/generic/semigroup.go b/context/readerioeither/generic/semigroup.go new file mode 100644 index 0000000..f587414 --- /dev/null +++ b/context/readerioeither/generic/semigroup.go @@ -0,0 +1,29 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package generic + +import ( + "context" + + ET "github.com/IBM/fp-go/either" + S "github.com/IBM/fp-go/semigroup" +) + +func AltSemigroup[GRA ~func(context.Context) GIOA, GIOA ~func() ET.Either[error, A], A any]() S.Semigroup[GRA] { + return S.AltSemigroup( + MonadAlt[func() GRA], + ) +} diff --git a/context/readerioeither/monoid.go b/context/readerioeither/monoid.go new file mode 100644 index 0000000..4e5e105 --- /dev/null +++ b/context/readerioeither/monoid.go @@ -0,0 +1,36 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package readerioeither + +import ( + G "github.com/IBM/fp-go/context/readerioeither/generic" + M "github.com/IBM/fp-go/monoid" +) + +// ApplicativeMonoid returns a [Monoid] that concatenates [ReaderIOEither] instances via their applicative +func ApplicativeMonoid[A any](m M.Monoid[A]) M.Monoid[ReaderIOEither[A]] { + return G.ApplicativeMonoid[ReaderIOEither[A], ReaderIOEither[func(A) A]](m) +} + +// ApplicativeMonoidSeq returns a [Monoid] that concatenates [ReaderIOEither] instances via their applicative +func ApplicativeMonoidSeq[A any](m M.Monoid[A]) M.Monoid[ReaderIOEither[A]] { + return G.ApplicativeMonoidSeq[ReaderIOEither[A], ReaderIOEither[func(A) A]](m) +} + +// ApplicativeMonoidPar returns a [Monoid] that concatenates [ReaderIOEither] instances via their applicative +func ApplicativeMonoidPar[A any](m M.Monoid[A]) M.Monoid[ReaderIOEither[A]] { + return G.ApplicativeMonoidPar[ReaderIOEither[A], ReaderIOEither[func(A) A]](m) +} diff --git a/context/readerioeither/reader.go b/context/readerioeither/reader.go index 29a3c40..0205d1c 100644 --- a/context/readerioeither/reader.go +++ b/context/readerioeither/reader.go @@ -25,6 +25,7 @@ import ( ET "github.com/IBM/fp-go/either" IO "github.com/IBM/fp-go/io" IOE "github.com/IBM/fp-go/ioeither" + L "github.com/IBM/fp-go/lazy" O "github.com/IBM/fp-go/option" ) @@ -182,7 +183,7 @@ func Timer(delay time.Duration) ReaderIOEither[time.Time] { } // Defer creates an IO by creating a brand new IO via a generator function, each time -func Defer[A any](gen func() ReaderIOEither[A]) ReaderIOEither[A] { +func Defer[A any](gen L.Lazy[ReaderIOEither[A]]) ReaderIOEither[A] { return G.Defer[ReaderIOEither[A]](gen) } @@ -190,3 +191,13 @@ func Defer[A any](gen func() ReaderIOEither[A]) ReaderIOEither[A] { func TryCatch[A any](f func(context.Context) func() (A, error)) ReaderIOEither[A] { return G.TryCatch[ReaderIOEither[A]](f) } + +// MonadAlt identifies an associative operation on a type constructor +func MonadAlt[A any](first ReaderIOEither[A], second L.Lazy[ReaderIOEither[A]]) ReaderIOEither[A] { + return G.MonadAlt(first, second) +} + +// Alt identifies an associative operation on a type constructor +func Alt[A any](second L.Lazy[ReaderIOEither[A]]) func(ReaderIOEither[A]) ReaderIOEither[A] { + return G.Alt(second) +} diff --git a/context/readerioeither/semigroup.go b/context/readerioeither/semigroup.go new file mode 100644 index 0000000..33c696a --- /dev/null +++ b/context/readerioeither/semigroup.go @@ -0,0 +1,26 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package readerioeither + +import ( + G "github.com/IBM/fp-go/context/readerioeither/generic" + S "github.com/IBM/fp-go/semigroup" +) + +// AltSemigroup is a [Semigroup] that tries the first item and then the second one using an alternative +func AltSemigroup[A any]() S.Semigroup[ReaderIOEither[A]] { + return G.AltSemigroup[ReaderIOEither[A]]() +} diff --git a/coverage.bat b/coverage.bat new file mode 100644 index 0000000..24c03f7 --- /dev/null +++ b/coverage.bat @@ -0,0 +1,2 @@ +@echo off +go tool cover -html=build/cover.out -o build/cover.html \ No newline at end of file diff --git a/either/apply.go b/either/apply.go index 045adbf..369ada1 100644 --- a/either/apply.go +++ b/either/apply.go @@ -24,6 +24,7 @@ func ApplySemigroup[E, A any](s S.Semigroup[A]) S.Semigroup[Either[E, A]] { return S.ApplySemigroup(MonadMap[E, A, func(A) A], MonadAp[A, E, A], s) } +// ApplicativeMonoid returns a [Monoid] that concatenates [Either] instances via their applicative func ApplicativeMonoid[E, A any](m M.Monoid[A]) M.Monoid[Either[E, A]] { return M.ApplicativeMonoid(Of[E, A], MonadMap[E, A, func(A) A], MonadAp[A, E, A], m) } diff --git a/either/gen.go b/either/gen.go index 6837347..1526d60 100644 --- a/either/gen.go +++ b/either/gen.go @@ -4,7 +4,6 @@ package either - import ( A "github.com/IBM/fp-go/internal/apply" T "github.com/IBM/fp-go/tuple" @@ -13,692 +12,692 @@ import ( // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning an Either // The inverse function is [Uneitherize0] func Eitherize0[F ~func() (R, error), R any](f F) func() Either[error, R] { - return func() Either[error, R] { - return TryCatchError(func() (R, error) { - return f() - }) - } + return func() Either[error, R] { + return TryCatchError(func() (R, error) { + return f() + }) + } } // Uneitherize0 converts a function with 0 parameters returning an Either into a function with 0 parameters returning a tuple // The inverse function is [Eitherize0] func Uneitherize0[F ~func() Either[error, R], R any](f F) func() (R, error) { - return func() (R, error) { - return UnwrapError(f()) - } + return func() (R, error) { + return UnwrapError(f()) + } } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning an Either // The inverse function is [Uneitherize1] func Eitherize1[F ~func(T0) (R, error), T0, R any](f F) func(T0) Either[error, R] { - return func(t0 T0) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0) - }) - } + return func(t0 T0) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0) + }) + } } // Uneitherize1 converts a function with 1 parameters returning an Either into a function with 1 parameters returning a tuple // The inverse function is [Eitherize1] func Uneitherize1[F ~func(T0) Either[error, R], T0, R any](f F) func(T0) (R, error) { - return func(t0 T0) (R, error) { - return UnwrapError(f(t0)) - } + return func(t0 T0) (R, error) { + return UnwrapError(f(t0)) + } } // SequenceT1 converts 1 parameters of [Either[E, T]] into a [Either[E, Tuple1]]. func SequenceT1[E, T1 any](t1 Either[E, T1]) Either[E, T.Tuple1[T1]] { - return A.SequenceT1( - Map[E, T1, T.Tuple1[T1]], - t1, - ) + return A.SequenceT1( + Map[E, T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [Tuple1] of [Either[E, T]] into an [Either[E, Tuple1]]. func SequenceTuple1[E, T1 any](t T.Tuple1[Either[E, T1]]) Either[E, T.Tuple1[T1]] { - return A.SequenceTuple1( - Map[E, T1, T.Tuple1[T1]], - t, - ) + return A.SequenceTuple1( + Map[E, T1, T.Tuple1[T1]], + t, + ) } // TraverseTuple1 converts a [Tuple1] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple1]]. -func TraverseTuple1[F1 ~func(A1) Either[E, T1], E, A1, T1 any](f1 F1) func (T.Tuple1[A1]) Either[E, T.Tuple1[T1]] { - return func(t T.Tuple1[A1]) Either[E, T.Tuple1[T1]] { - return A.TraverseTuple1( - Map[E, T1, T.Tuple1[T1]], - f1, - t, - ) - } +func TraverseTuple1[F1 ~func(A1) Either[E, T1], E, A1, T1 any](f1 F1) func(T.Tuple1[A1]) Either[E, T.Tuple1[T1]] { + return func(t T.Tuple1[A1]) Either[E, T.Tuple1[T1]] { + return A.TraverseTuple1( + Map[E, T1, T.Tuple1[T1]], + f1, + t, + ) + } } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning an Either // The inverse function is [Uneitherize2] func Eitherize2[F ~func(T0, T1) (R, error), T0, T1, R any](f F) func(T0, T1) Either[error, R] { - return func(t0 T0, t1 T1) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1) - }) - } + return func(t0 T0, t1 T1) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1) + }) + } } // Uneitherize2 converts a function with 2 parameters returning an Either into a function with 2 parameters returning a tuple // The inverse function is [Eitherize2] func Uneitherize2[F ~func(T0, T1) Either[error, R], T0, T1, R any](f F) func(T0, T1) (R, error) { - return func(t0 T0, t1 T1) (R, error) { - return UnwrapError(f(t0, t1)) - } + return func(t0 T0, t1 T1) (R, error) { + return UnwrapError(f(t0, t1)) + } } // SequenceT2 converts 2 parameters of [Either[E, T]] into a [Either[E, Tuple2]]. func SequenceT2[E, T1, T2 any](t1 Either[E, T1], t2 Either[E, T2]) Either[E, T.Tuple2[T1, T2]] { - return A.SequenceT2( - Map[E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], E, T2], - t1, - t2, - ) + return A.SequenceT2( + Map[E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], E, T2], + t1, + t2, + ) } // SequenceTuple2 converts a [Tuple2] of [Either[E, T]] into an [Either[E, Tuple2]]. func SequenceTuple2[E, T1, T2 any](t T.Tuple2[Either[E, T1], Either[E, T2]]) Either[E, T.Tuple2[T1, T2]] { - return A.SequenceTuple2( - Map[E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], E, T2], - t, - ) + return A.SequenceTuple2( + Map[E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], E, T2], + t, + ) } // TraverseTuple2 converts a [Tuple2] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple2]]. -func TraverseTuple2[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], E, A1, T1, A2, T2 any](f1 F1, f2 F2) func (T.Tuple2[A1, A2]) Either[E, T.Tuple2[T1, T2]] { - return func(t T.Tuple2[A1, A2]) Either[E, T.Tuple2[T1, T2]] { - return A.TraverseTuple2( - Map[E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], E, T2], - f1, - f2, - t, - ) - } +func TraverseTuple2[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], E, A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) Either[E, T.Tuple2[T1, T2]] { + return func(t T.Tuple2[A1, A2]) Either[E, T.Tuple2[T1, T2]] { + return A.TraverseTuple2( + Map[E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], E, T2], + f1, + f2, + t, + ) + } } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning an Either // The inverse function is [Uneitherize3] func Eitherize3[F ~func(T0, T1, T2) (R, error), T0, T1, T2, R any](f F) func(T0, T1, T2) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2) - }) - } + return func(t0 T0, t1 T1, t2 T2) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2) + }) + } } // Uneitherize3 converts a function with 3 parameters returning an Either into a function with 3 parameters returning a tuple // The inverse function is [Eitherize3] func Uneitherize3[F ~func(T0, T1, T2) Either[error, R], T0, T1, T2, R any](f F) func(T0, T1, T2) (R, error) { - return func(t0 T0, t1 T1, t2 T2) (R, error) { - return UnwrapError(f(t0, t1, t2)) - } + return func(t0 T0, t1 T1, t2 T2) (R, error) { + return UnwrapError(f(t0, t1, t2)) + } } // SequenceT3 converts 3 parameters of [Either[E, T]] into a [Either[E, Tuple3]]. func SequenceT3[E, T1, T2, T3 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3]) Either[E, T.Tuple3[T1, T2, T3]] { - return A.SequenceT3( - Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], - Ap[T.Tuple3[T1, T2, T3], E, T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], + Ap[T.Tuple3[T1, T2, T3], E, T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [Tuple3] of [Either[E, T]] into an [Either[E, Tuple3]]. func SequenceTuple3[E, T1, T2, T3 any](t T.Tuple3[Either[E, T1], Either[E, T2], Either[E, T3]]) Either[E, T.Tuple3[T1, T2, T3]] { - return A.SequenceTuple3( - Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], - Ap[T.Tuple3[T1, T2, T3], E, T3], - t, - ) + return A.SequenceTuple3( + Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], + Ap[T.Tuple3[T1, T2, T3], E, T3], + t, + ) } // TraverseTuple3 converts a [Tuple3] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple3]]. -func TraverseTuple3[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], E, A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func (T.Tuple3[A1, A2, A3]) Either[E, T.Tuple3[T1, T2, T3]] { - return func(t T.Tuple3[A1, A2, A3]) Either[E, T.Tuple3[T1, T2, T3]] { - return A.TraverseTuple3( - Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], - Ap[T.Tuple3[T1, T2, T3], E, T3], - f1, - f2, - f3, - t, - ) - } +func TraverseTuple3[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], E, A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) Either[E, T.Tuple3[T1, T2, T3]] { + return func(t T.Tuple3[A1, A2, A3]) Either[E, T.Tuple3[T1, T2, T3]] { + return A.TraverseTuple3( + Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], E, T2], + Ap[T.Tuple3[T1, T2, T3], E, T3], + f1, + f2, + f3, + t, + ) + } } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning an Either // The inverse function is [Uneitherize4] func Eitherize4[F ~func(T0, T1, T2, T3) (R, error), T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3) + }) + } } // Uneitherize4 converts a function with 4 parameters returning an Either into a function with 4 parameters returning a tuple // The inverse function is [Eitherize4] func Uneitherize4[F ~func(T0, T1, T2, T3) Either[error, R], T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3) (R, error) { - return UnwrapError(f(t0, t1, t2, t3)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) (R, error) { + return UnwrapError(f(t0, t1, t2, t3)) + } } // SequenceT4 converts 4 parameters of [Either[E, T]] into a [Either[E, Tuple4]]. func SequenceT4[E, T1, T2, T3, T4 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4]) Either[E, T.Tuple4[T1, T2, T3, T4]] { - return A.SequenceT4( - Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], - Ap[T.Tuple4[T1, T2, T3, T4], E, T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], + Ap[T.Tuple4[T1, T2, T3, T4], E, T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [Tuple4] of [Either[E, T]] into an [Either[E, Tuple4]]. func SequenceTuple4[E, T1, T2, T3, T4 any](t T.Tuple4[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4]]) Either[E, T.Tuple4[T1, T2, T3, T4]] { - return A.SequenceTuple4( - Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], - Ap[T.Tuple4[T1, T2, T3, T4], E, T4], - t, - ) + return A.SequenceTuple4( + Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], + Ap[T.Tuple4[T1, T2, T3, T4], E, T4], + t, + ) } // TraverseTuple4 converts a [Tuple4] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple4]]. -func TraverseTuple4[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], E, A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func (T.Tuple4[A1, A2, A3, A4]) Either[E, T.Tuple4[T1, T2, T3, T4]] { - return func(t T.Tuple4[A1, A2, A3, A4]) Either[E, T.Tuple4[T1, T2, T3, T4]] { - return A.TraverseTuple4( - Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], - Ap[T.Tuple4[T1, T2, T3, T4], E, T4], - f1, - f2, - f3, - f4, - t, - ) - } +func TraverseTuple4[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], E, A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) Either[E, T.Tuple4[T1, T2, T3, T4]] { + return func(t T.Tuple4[A1, A2, A3, A4]) Either[E, T.Tuple4[T1, T2, T3, T4]] { + return A.TraverseTuple4( + Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], E, T3], + Ap[T.Tuple4[T1, T2, T3, T4], E, T4], + f1, + f2, + f3, + f4, + t, + ) + } } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning an Either // The inverse function is [Uneitherize5] func Eitherize5[F ~func(T0, T1, T2, T3, T4) (R, error), T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4) + }) + } } // Uneitherize5 converts a function with 5 parameters returning an Either into a function with 5 parameters returning a tuple // The inverse function is [Eitherize5] func Uneitherize5[F ~func(T0, T1, T2, T3, T4) Either[error, R], T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4)) + } } // SequenceT5 converts 5 parameters of [Either[E, T]] into a [Either[E, Tuple5]]. func SequenceT5[E, T1, T2, T3, T4, T5 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return A.SequenceT5( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [Tuple5] of [Either[E, T]] into an [Either[E, Tuple5]]. func SequenceTuple5[E, T1, T2, T3, T4, T5 any](t T.Tuple5[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5]]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return A.SequenceTuple5( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], - t, - ) + return A.SequenceTuple5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], + t, + ) } // TraverseTuple5 converts a [Tuple5] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple5]]. -func TraverseTuple5[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func (T.Tuple5[A1, A2, A3, A4, A5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return A.TraverseTuple5( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } +func TraverseTuple5[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] { + return A.TraverseTuple5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], E, T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning an Either // The inverse function is [Uneitherize6] func Eitherize6[F ~func(T0, T1, T2, T3, T4, T5) (R, error), T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4, t5) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4, t5) + }) + } } // Uneitherize6 converts a function with 6 parameters returning an Either into a function with 6 parameters returning a tuple // The inverse function is [Eitherize6] func Uneitherize6[F ~func(T0, T1, T2, T3, T4, T5) Either[error, R], T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4, t5)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4, t5)) + } } // SequenceT6 converts 6 parameters of [Either[E, T]] into a [Either[E, Tuple6]]. func SequenceT6[E, T1, T2, T3, T4, T5, T6 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.SequenceT6( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [Tuple6] of [Either[E, T]] into an [Either[E, Tuple6]]. func SequenceTuple6[E, T1, T2, T3, T4, T5, T6 any](t T.Tuple6[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5], Either[E, T6]]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.SequenceTuple6( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], - t, - ) + return A.SequenceTuple6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], + t, + ) } // TraverseTuple6 converts a [Tuple6] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple6]]. -func TraverseTuple6[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func (T.Tuple6[A1, A2, A3, A4, A5, A6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.TraverseTuple6( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } +func TraverseTuple6[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { + return A.TraverseTuple6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning an Either // The inverse function is [Uneitherize7] func Eitherize7[F ~func(T0, T1, T2, T3, T4, T5, T6) (R, error), T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4, t5, t6) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4, t5, t6) + }) + } } // Uneitherize7 converts a function with 7 parameters returning an Either into a function with 7 parameters returning a tuple // The inverse function is [Eitherize7] func Uneitherize7[F ~func(T0, T1, T2, T3, T4, T5, T6) Either[error, R], T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6)) + } } // SequenceT7 converts 7 parameters of [Either[E, T]] into a [Either[E, Tuple7]]. func SequenceT7[E, T1, T2, T3, T4, T5, T6, T7 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.SequenceT7( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [Tuple7] of [Either[E, T]] into an [Either[E, Tuple7]]. func SequenceTuple7[E, T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5], Either[E, T6], Either[E, T7]]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.SequenceTuple7( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], - t, - ) + return A.SequenceTuple7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], + t, + ) } // TraverseTuple7 converts a [Tuple7] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple7]]. -func TraverseTuple7[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func (T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.TraverseTuple7( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } +func TraverseTuple7[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return A.TraverseTuple7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning an Either // The inverse function is [Uneitherize8] func Eitherize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4, t5, t6, t7) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4, t5, t6, t7) + }) + } } // Uneitherize8 converts a function with 8 parameters returning an Either into a function with 8 parameters returning a tuple // The inverse function is [Eitherize8] func Uneitherize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7)) + } } // SequenceT8 converts 8 parameters of [Either[E, T]] into a [Either[E, Tuple8]]. func SequenceT8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.SequenceT8( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [Tuple8] of [Either[E, T]] into an [Either[E, Tuple8]]. func SequenceTuple8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5], Either[E, T6], Either[E, T7], Either[E, T8]]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.SequenceTuple8( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], - t, - ) + return A.SequenceTuple8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], + t, + ) } // TraverseTuple8 converts a [Tuple8] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple8]]. -func TraverseTuple8[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func (T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.TraverseTuple8( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } +func TraverseTuple8[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return A.TraverseTuple8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning an Either // The inverse function is [Uneitherize9] func Eitherize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) + }) + } } // Uneitherize9 converts a function with 9 parameters returning an Either into a function with 9 parameters returning a tuple // The inverse function is [Eitherize9] func Uneitherize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7, t8)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7, t8)) + } } // SequenceT9 converts 9 parameters of [Either[E, T]] into a [Either[E, Tuple9]]. func SequenceT9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.SequenceT9( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [Tuple9] of [Either[E, T]] into an [Either[E, Tuple9]]. func SequenceTuple9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5], Either[E, T6], Either[E, T7], Either[E, T8], Either[E, T9]]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.SequenceTuple9( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], - t, - ) + return A.SequenceTuple9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], + t, + ) } // TraverseTuple9 converts a [Tuple9] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple9]]. -func TraverseTuple9[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], F9 ~func(A9) Either[E, T9], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func (T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.TraverseTuple9( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } +func TraverseTuple9[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], F9 ~func(A9) Either[E, T9], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return A.TraverseTuple9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning an Either // The inverse function is [Uneitherize10] func Eitherize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Either[error, R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) Either[error, R] { - return TryCatchError(func() (R, error) { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) Either[error, R] { + return TryCatchError(func() (R, error) { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) + }) + } } // Uneitherize10 converts a function with 10 parameters returning an Either into a function with 10 parameters returning a tuple // The inverse function is [Eitherize10] func Uneitherize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) { - return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) { + return UnwrapError(f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) + } } // SequenceT10 converts 10 parameters of [Either[E, T]] into a [Either[E, Tuple10]]. func SequenceT10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9], t10 Either[E, T10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.SequenceT10( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [Tuple10] of [Either[E, T]] into an [Either[E, Tuple10]]. func SequenceTuple10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[Either[E, T1], Either[E, T2], Either[E, T3], Either[E, T4], Either[E, T5], Either[E, T6], Either[E, T7], Either[E, T8], Either[E, T9], Either[E, T10]]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.SequenceTuple10( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], - t, - ) + return A.SequenceTuple10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], + t, + ) } // TraverseTuple10 converts a [Tuple10] of [A] via transformation functions transforming [A] to [Either[E, A]] into a [Either[E, Tuple10]]. -func TraverseTuple10[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], F9 ~func(A9) Either[E, T9], F10 ~func(A10) Either[E, T10], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func (T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.TraverseTuple10( - Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } +func TraverseTuple10[F1 ~func(A1) Either[E, T1], F2 ~func(A2) Either[E, T2], F3 ~func(A3) Either[E, T3], F4 ~func(A4) Either[E, T4], F5 ~func(A5) Either[E, T5], F6 ~func(A6) Either[E, T6], F7 ~func(A7) Either[E, T7], F8 ~func(A8) Either[E, T8], F9 ~func(A9) Either[E, T9], F10 ~func(A10) Either[E, T10], E, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return A.TraverseTuple10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } diff --git a/function/binds.go b/function/binds.go index 940846e..4b22829 100644 --- a/function/binds.go +++ b/function/binds.go @@ -3,449 +3,453 @@ // 2023-09-12 13:44:23.4226437 +0200 CEST m=+0.011841001 package function + // Combinations for a total of 1 arguments // Bind1of1 takes a function with 1 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [1] of the original function. // The return value of is a function with the remaining 0 parameters at positions [] of the original function. func Bind1of1[F ~func(T1) R, T1, R any](f F) func(T1) func() R { - return func(t1 T1) func() R { - return func() R { - return f(t1) - } - } + return func(t1 T1) func() R { + return func() R { + return f(t1) + } + } } // Ignore1of1 takes a function with 0 parameters and returns a new function with 1 parameters that will ignore the values at positions [1] and pass the remaining 0 parameters to the original function func Ignore1of1[T1 any, F ~func() R, R any](f F) func(T1) R { - return func(t1 T1) R { - return f() - } + return func(t1 T1) R { + return f() + } } + // Combinations for a total of 2 arguments // Bind1of2 takes a function with 2 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [1] of the original function. // The return value of is a function with the remaining 1 parameters at positions [2] of the original function. func Bind1of2[F ~func(T1, T2) R, T1, T2, R any](f F) func(T1) func(T2) R { - return func(t1 T1) func(T2) R { - return func(t2 T2) R { - return f(t1, t2) - } - } + return func(t1 T1) func(T2) R { + return func(t2 T2) R { + return f(t1, t2) + } + } } // Ignore1of2 takes a function with 1 parameters and returns a new function with 2 parameters that will ignore the values at positions [1] and pass the remaining 1 parameters to the original function func Ignore1of2[T1 any, F ~func(T2) R, T2, R any](f F) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f(t2) - } + return func(t1 T1, t2 T2) R { + return f(t2) + } } // Bind2of2 takes a function with 2 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [2] of the original function. // The return value of is a function with the remaining 1 parameters at positions [1] of the original function. func Bind2of2[F ~func(T1, T2) R, T1, T2, R any](f F) func(T2) func(T1) R { - return func(t2 T2) func(T1) R { - return func(t1 T1) R { - return f(t1, t2) - } - } + return func(t2 T2) func(T1) R { + return func(t1 T1) R { + return f(t1, t2) + } + } } // Ignore2of2 takes a function with 1 parameters and returns a new function with 2 parameters that will ignore the values at positions [2] and pass the remaining 1 parameters to the original function func Ignore2of2[T2 any, F ~func(T1) R, T1, R any](f F) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f(t1) - } + return func(t1 T1, t2 T2) R { + return f(t1) + } } // Bind12of2 takes a function with 2 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 2] of the original function. // The return value of is a function with the remaining 0 parameters at positions [] of the original function. func Bind12of2[F ~func(T1, T2) R, T1, T2, R any](f F) func(T1, T2) func() R { - return func(t1 T1, t2 T2) func() R { - return func() R { - return f(t1, t2) - } - } + return func(t1 T1, t2 T2) func() R { + return func() R { + return f(t1, t2) + } + } } // Ignore12of2 takes a function with 0 parameters and returns a new function with 2 parameters that will ignore the values at positions [1, 2] and pass the remaining 0 parameters to the original function func Ignore12of2[T1, T2 any, F ~func() R, R any](f F) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f() - } + return func(t1 T1, t2 T2) R { + return f() + } } + // Combinations for a total of 3 arguments // Bind1of3 takes a function with 3 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [1] of the original function. // The return value of is a function with the remaining 2 parameters at positions [2, 3] of the original function. func Bind1of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T1) func(T2, T3) R { - return func(t1 T1) func(T2, T3) R { - return func(t2 T2, t3 T3) R { - return f(t1, t2, t3) - } - } + return func(t1 T1) func(T2, T3) R { + return func(t2 T2, t3 T3) R { + return f(t1, t2, t3) + } + } } // Ignore1of3 takes a function with 2 parameters and returns a new function with 3 parameters that will ignore the values at positions [1] and pass the remaining 2 parameters to the original function func Ignore1of3[T1 any, F ~func(T2, T3) R, T2, T3, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t2, t3) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t2, t3) + } } // Bind2of3 takes a function with 3 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [2] of the original function. // The return value of is a function with the remaining 2 parameters at positions [1, 3] of the original function. func Bind2of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T2) func(T1, T3) R { - return func(t2 T2) func(T1, T3) R { - return func(t1 T1, t3 T3) R { - return f(t1, t2, t3) - } - } + return func(t2 T2) func(T1, T3) R { + return func(t1 T1, t3 T3) R { + return f(t1, t2, t3) + } + } } // Ignore2of3 takes a function with 2 parameters and returns a new function with 3 parameters that will ignore the values at positions [2] and pass the remaining 2 parameters to the original function func Ignore2of3[T2 any, F ~func(T1, T3) R, T1, T3, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t1, t3) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t1, t3) + } } // Bind3of3 takes a function with 3 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [3] of the original function. // The return value of is a function with the remaining 2 parameters at positions [1, 2] of the original function. func Bind3of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T3) func(T1, T2) R { - return func(t3 T3) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f(t1, t2, t3) - } - } + return func(t3 T3) func(T1, T2) R { + return func(t1 T1, t2 T2) R { + return f(t1, t2, t3) + } + } } // Ignore3of3 takes a function with 2 parameters and returns a new function with 3 parameters that will ignore the values at positions [3] and pass the remaining 2 parameters to the original function func Ignore3of3[T3 any, F ~func(T1, T2) R, T1, T2, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t1, t2) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t1, t2) + } } // Bind12of3 takes a function with 3 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 2] of the original function. // The return value of is a function with the remaining 1 parameters at positions [3] of the original function. func Bind12of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T1, T2) func(T3) R { - return func(t1 T1, t2 T2) func(T3) R { - return func(t3 T3) R { - return f(t1, t2, t3) - } - } + return func(t1 T1, t2 T2) func(T3) R { + return func(t3 T3) R { + return f(t1, t2, t3) + } + } } // Ignore12of3 takes a function with 1 parameters and returns a new function with 3 parameters that will ignore the values at positions [1, 2] and pass the remaining 1 parameters to the original function func Ignore12of3[T1, T2 any, F ~func(T3) R, T3, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t3) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t3) + } } // Bind13of3 takes a function with 3 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 3] of the original function. // The return value of is a function with the remaining 1 parameters at positions [2] of the original function. func Bind13of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T1, T3) func(T2) R { - return func(t1 T1, t3 T3) func(T2) R { - return func(t2 T2) R { - return f(t1, t2, t3) - } - } + return func(t1 T1, t3 T3) func(T2) R { + return func(t2 T2) R { + return f(t1, t2, t3) + } + } } // Ignore13of3 takes a function with 1 parameters and returns a new function with 3 parameters that will ignore the values at positions [1, 3] and pass the remaining 1 parameters to the original function func Ignore13of3[T1, T3 any, F ~func(T2) R, T2, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t2) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t2) + } } // Bind23of3 takes a function with 3 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [2, 3] of the original function. // The return value of is a function with the remaining 1 parameters at positions [1] of the original function. func Bind23of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T2, T3) func(T1) R { - return func(t2 T2, t3 T3) func(T1) R { - return func(t1 T1) R { - return f(t1, t2, t3) - } - } + return func(t2 T2, t3 T3) func(T1) R { + return func(t1 T1) R { + return f(t1, t2, t3) + } + } } // Ignore23of3 takes a function with 1 parameters and returns a new function with 3 parameters that will ignore the values at positions [2, 3] and pass the remaining 1 parameters to the original function func Ignore23of3[T2, T3 any, F ~func(T1) R, T1, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t1) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(t1) + } } // Bind123of3 takes a function with 3 parameters and returns a new function with 3 parameters that will bind these parameters to the positions [1, 2, 3] of the original function. // The return value of is a function with the remaining 0 parameters at positions [] of the original function. func Bind123of3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T1, T2, T3) func() R { - return func(t1 T1, t2 T2, t3 T3) func() R { - return func() R { - return f(t1, t2, t3) - } - } + return func(t1 T1, t2 T2, t3 T3) func() R { + return func() R { + return f(t1, t2, t3) + } + } } // Ignore123of3 takes a function with 0 parameters and returns a new function with 3 parameters that will ignore the values at positions [1, 2, 3] and pass the remaining 0 parameters to the original function func Ignore123of3[T1, T2, T3 any, F ~func() R, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f() - } + return func(t1 T1, t2 T2, t3 T3) R { + return f() + } } + // Combinations for a total of 4 arguments // Bind1of4 takes a function with 4 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [1] of the original function. // The return value of is a function with the remaining 3 parameters at positions [2, 3, 4] of the original function. func Bind1of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1) func(T2, T3, T4) R { - return func(t1 T1) func(T2, T3, T4) R { - return func(t2 T2, t3 T3, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1) func(T2, T3, T4) R { + return func(t2 T2, t3 T3, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore1of4 takes a function with 3 parameters and returns a new function with 4 parameters that will ignore the values at positions [1] and pass the remaining 3 parameters to the original function func Ignore1of4[T1 any, F ~func(T2, T3, T4) R, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t2, t3, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t2, t3, t4) + } } // Bind2of4 takes a function with 4 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [2] of the original function. // The return value of is a function with the remaining 3 parameters at positions [1, 3, 4] of the original function. func Bind2of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T2) func(T1, T3, T4) R { - return func(t2 T2) func(T1, T3, T4) R { - return func(t1 T1, t3 T3, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t2 T2) func(T1, T3, T4) R { + return func(t1 T1, t3 T3, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore2of4 takes a function with 3 parameters and returns a new function with 4 parameters that will ignore the values at positions [2] and pass the remaining 3 parameters to the original function func Ignore2of4[T2 any, F ~func(T1, T3, T4) R, T1, T3, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t3, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t3, t4) + } } // Bind3of4 takes a function with 4 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [3] of the original function. // The return value of is a function with the remaining 3 parameters at positions [1, 2, 4] of the original function. func Bind3of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T3) func(T1, T2, T4) R { - return func(t3 T3) func(T1, T2, T4) R { - return func(t1 T1, t2 T2, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t3 T3) func(T1, T2, T4) R { + return func(t1 T1, t2 T2, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore3of4 takes a function with 3 parameters and returns a new function with 4 parameters that will ignore the values at positions [3] and pass the remaining 3 parameters to the original function func Ignore3of4[T3 any, F ~func(T1, T2, T4) R, T1, T2, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t2, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t2, t4) + } } // Bind4of4 takes a function with 4 parameters and returns a new function with 1 parameters that will bind these parameters to the positions [4] of the original function. // The return value of is a function with the remaining 3 parameters at positions [1, 2, 3] of the original function. func Bind4of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T4) func(T1, T2, T3) R { - return func(t4 T4) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(t1, t2, t3, t4) - } - } + return func(t4 T4) func(T1, T2, T3) R { + return func(t1 T1, t2 T2, t3 T3) R { + return f(t1, t2, t3, t4) + } + } } // Ignore4of4 takes a function with 3 parameters and returns a new function with 4 parameters that will ignore the values at positions [4] and pass the remaining 3 parameters to the original function func Ignore4of4[T4 any, F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t2, t3) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t2, t3) + } } // Bind12of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 2] of the original function. // The return value of is a function with the remaining 2 parameters at positions [3, 4] of the original function. func Bind12of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T2) func(T3, T4) R { - return func(t1 T1, t2 T2) func(T3, T4) R { - return func(t3 T3, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t2 T2) func(T3, T4) R { + return func(t3 T3, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore12of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 2] and pass the remaining 2 parameters to the original function func Ignore12of4[T1, T2 any, F ~func(T3, T4) R, T3, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t3, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t3, t4) + } } // Bind13of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 3] of the original function. // The return value of is a function with the remaining 2 parameters at positions [2, 4] of the original function. func Bind13of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T3) func(T2, T4) R { - return func(t1 T1, t3 T3) func(T2, T4) R { - return func(t2 T2, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t3 T3) func(T2, T4) R { + return func(t2 T2, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore13of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 3] and pass the remaining 2 parameters to the original function func Ignore13of4[T1, T3 any, F ~func(T2, T4) R, T2, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t2, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t2, t4) + } } // Bind14of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [1, 4] of the original function. // The return value of is a function with the remaining 2 parameters at positions [2, 3] of the original function. func Bind14of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T4) func(T2, T3) R { - return func(t1 T1, t4 T4) func(T2, T3) R { - return func(t2 T2, t3 T3) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t4 T4) func(T2, T3) R { + return func(t2 T2, t3 T3) R { + return f(t1, t2, t3, t4) + } + } } // Ignore14of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 4] and pass the remaining 2 parameters to the original function func Ignore14of4[T1, T4 any, F ~func(T2, T3) R, T2, T3, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t2, t3) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t2, t3) + } } // Bind23of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [2, 3] of the original function. // The return value of is a function with the remaining 2 parameters at positions [1, 4] of the original function. func Bind23of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T2, T3) func(T1, T4) R { - return func(t2 T2, t3 T3) func(T1, T4) R { - return func(t1 T1, t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t2 T2, t3 T3) func(T1, T4) R { + return func(t1 T1, t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore23of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [2, 3] and pass the remaining 2 parameters to the original function func Ignore23of4[T2, T3 any, F ~func(T1, T4) R, T1, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t4) + } } // Bind24of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [2, 4] of the original function. // The return value of is a function with the remaining 2 parameters at positions [1, 3] of the original function. func Bind24of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T2, T4) func(T1, T3) R { - return func(t2 T2, t4 T4) func(T1, T3) R { - return func(t1 T1, t3 T3) R { - return f(t1, t2, t3, t4) - } - } + return func(t2 T2, t4 T4) func(T1, T3) R { + return func(t1 T1, t3 T3) R { + return f(t1, t2, t3, t4) + } + } } // Ignore24of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [2, 4] and pass the remaining 2 parameters to the original function func Ignore24of4[T2, T4 any, F ~func(T1, T3) R, T1, T3, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t3) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t3) + } } // Bind34of4 takes a function with 4 parameters and returns a new function with 2 parameters that will bind these parameters to the positions [3, 4] of the original function. // The return value of is a function with the remaining 2 parameters at positions [1, 2] of the original function. func Bind34of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T3, T4) func(T1, T2) R { - return func(t3 T3, t4 T4) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f(t1, t2, t3, t4) - } - } + return func(t3 T3, t4 T4) func(T1, T2) R { + return func(t1 T1, t2 T2) R { + return f(t1, t2, t3, t4) + } + } } // Ignore34of4 takes a function with 2 parameters and returns a new function with 4 parameters that will ignore the values at positions [3, 4] and pass the remaining 2 parameters to the original function func Ignore34of4[T3, T4 any, F ~func(T1, T2) R, T1, T2, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1, t2) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1, t2) + } } // Bind123of4 takes a function with 4 parameters and returns a new function with 3 parameters that will bind these parameters to the positions [1, 2, 3] of the original function. // The return value of is a function with the remaining 1 parameters at positions [4] of the original function. func Bind123of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T2, T3) func(T4) R { - return func(t1 T1, t2 T2, t3 T3) func(T4) R { - return func(t4 T4) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t2 T2, t3 T3) func(T4) R { + return func(t4 T4) R { + return f(t1, t2, t3, t4) + } + } } // Ignore123of4 takes a function with 1 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 2, 3] and pass the remaining 1 parameters to the original function func Ignore123of4[T1, T2, T3 any, F ~func(T4) R, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t4) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t4) + } } // Bind124of4 takes a function with 4 parameters and returns a new function with 3 parameters that will bind these parameters to the positions [1, 2, 4] of the original function. // The return value of is a function with the remaining 1 parameters at positions [3] of the original function. func Bind124of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T2, T4) func(T3) R { - return func(t1 T1, t2 T2, t4 T4) func(T3) R { - return func(t3 T3) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t2 T2, t4 T4) func(T3) R { + return func(t3 T3) R { + return f(t1, t2, t3, t4) + } + } } // Ignore124of4 takes a function with 1 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 2, 4] and pass the remaining 1 parameters to the original function func Ignore124of4[T1, T2, T4 any, F ~func(T3) R, T3, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t3) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t3) + } } // Bind134of4 takes a function with 4 parameters and returns a new function with 3 parameters that will bind these parameters to the positions [1, 3, 4] of the original function. // The return value of is a function with the remaining 1 parameters at positions [2] of the original function. func Bind134of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T3, T4) func(T2) R { - return func(t1 T1, t3 T3, t4 T4) func(T2) R { - return func(t2 T2) R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t3 T3, t4 T4) func(T2) R { + return func(t2 T2) R { + return f(t1, t2, t3, t4) + } + } } // Ignore134of4 takes a function with 1 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 3, 4] and pass the remaining 1 parameters to the original function func Ignore134of4[T1, T3, T4 any, F ~func(T2) R, T2, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t2) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t2) + } } // Bind234of4 takes a function with 4 parameters and returns a new function with 3 parameters that will bind these parameters to the positions [2, 3, 4] of the original function. // The return value of is a function with the remaining 1 parameters at positions [1] of the original function. func Bind234of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T2, T3, T4) func(T1) R { - return func(t2 T2, t3 T3, t4 T4) func(T1) R { - return func(t1 T1) R { - return f(t1, t2, t3, t4) - } - } + return func(t2 T2, t3 T3, t4 T4) func(T1) R { + return func(t1 T1) R { + return f(t1, t2, t3, t4) + } + } } // Ignore234of4 takes a function with 1 parameters and returns a new function with 4 parameters that will ignore the values at positions [2, 3, 4] and pass the remaining 1 parameters to the original function func Ignore234of4[T2, T3, T4 any, F ~func(T1) R, T1, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(t1) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(t1) + } } // Bind1234of4 takes a function with 4 parameters and returns a new function with 4 parameters that will bind these parameters to the positions [1, 2, 3, 4] of the original function. // The return value of is a function with the remaining 0 parameters at positions [] of the original function. func Bind1234of4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) func() R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) func() R { - return func() R { - return f(t1, t2, t3, t4) - } - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) func() R { + return func() R { + return f(t1, t2, t3, t4) + } + } } // Ignore1234of4 takes a function with 0 parameters and returns a new function with 4 parameters that will ignore the values at positions [1, 2, 3, 4] and pass the remaining 0 parameters to the original function func Ignore1234of4[T1, T2, T3, T4 any, F ~func() R, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f() - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f() + } } diff --git a/function/gen.go b/function/gen.go index 91be60a..0a94017 100644 --- a/function/gen.go +++ b/function/gen.go @@ -7,1776 +7,1776 @@ package function // Pipe0 takes an initial value t0 and successively applies 0 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe0[T0 any](t0 T0) T0 { - return t0 + return t0 } // Variadic0 converts a function taking 0 parameters and a final slice into a function with 0 parameters but a final variadic argument func Variadic0[V, R any](f func([]V) R) func(...V) R { - return func(v ...V) R { - return f(v) - } + return func(v ...V) R { + return f(v) + } } // Unvariadic0 converts a function taking 0 parameters and a final variadic argument into a function with 0 parameters but a final slice argument func Unvariadic0[V, R any](f func(...V) R) func([]V) R { - return func(v []V) R { - return f(v...) - } + return func(v []V) R { + return f(v...) + } } // Unsliced0 converts a function taking a slice parameter into a function with 0 parameters func Unsliced0[F ~func([]T) R, T, R any](f F) func() R { - return func() R { - return f([]T{}) - } + return func() R { + return f([]T{}) + } } // Pipe1 takes an initial value t0 and successively applies 1 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe1[F1 ~func(T0) T1, T0, T1 any](t0 T0, f1 F1) T1 { - t1 := f1(t0) - return t1 + t1 := f1(t0) + return t1 } // Flow1 creates a function that takes an initial value t0 and successively applies 1 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow1[F1 ~func(T0) T1, T0, T1 any](f1 F1) func(T0) T1 { - return func(t0 T0) T1 { - return Pipe1(t0, f1) - } + return func(t0 T0) T1 { + return Pipe1(t0, f1) + } } // Nullary1 creates a parameter less function from a parameter less function and 0 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary1[F1 ~func() T1, T1 any](f1 F1) func() T1 { - return func() T1 { - return Pipe0(f1()) - } + return func() T1 { + return Pipe0(f1()) + } } // Curry1 takes a function with 1 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry1] func Curry1[T0, T1 any](f func(T0) T1) func(T0) T1 { - return func(t0 T0) T1 { - return f(t0) - } + return func(t0 T0) T1 { + return f(t0) + } } // Uncurry1 takes a cascade of 1 functions each taking only one parameter and returns a function with 1 parameters . // The inverse function is [Curry1] func Uncurry1[T0, T1 any](f func(T0) T1) func(T0) T1 { - return func(t0 T0) T1 { - return f(t0) - } + return func(t0 T0) T1 { + return f(t0) + } } // Variadic1 converts a function taking 1 parameters and a final slice into a function with 1 parameters but a final variadic argument func Variadic1[T1, V, R any](f func(T1, []V) R) func(T1, ...V) R { - return func(t1 T1, v ...V) R { - return f(t1, v) - } + return func(t1 T1, v ...V) R { + return f(t1, v) + } } // Unvariadic1 converts a function taking 1 parameters and a final variadic argument into a function with 1 parameters but a final slice argument func Unvariadic1[T1, V, R any](f func(T1, ...V) R) func(T1, []V) R { - return func(t1 T1, v []V) R { - return f(t1, v...) - } + return func(t1 T1, v []V) R { + return f(t1, v...) + } } // Unsliced1 converts a function taking a slice parameter into a function with 1 parameters func Unsliced1[F ~func([]T) R, T, R any](f F) func(T) R { - return func(t1 T) R { - return f([]T{t1}) - } + return func(t1 T) R { + return f([]T{t1}) + } } // Pipe2 takes an initial value t0 and successively applies 2 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe2[F1 ~func(T0) T1, F2 ~func(T1) T2, T0, T1, T2 any](t0 T0, f1 F1, f2 F2) T2 { - t1 := f1(t0) - t2 := f2(t1) - return t2 + t1 := f1(t0) + t2 := f2(t1) + return t2 } // Flow2 creates a function that takes an initial value t0 and successively applies 2 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow2[F1 ~func(T0) T1, F2 ~func(T1) T2, T0, T1, T2 any](f1 F1, f2 F2) func(T0) T2 { - return func(t0 T0) T2 { - return Pipe2(t0, f1, f2) - } + return func(t0 T0) T2 { + return Pipe2(t0, f1, f2) + } } // Nullary2 creates a parameter less function from a parameter less function and 1 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary2[F1 ~func() T1, F2 ~func(T1) T2, T1, T2 any](f1 F1, f2 F2) func() T2 { - return func() T2 { - return Pipe1(f1(), f2) - } + return func() T2 { + return Pipe1(f1(), f2) + } } // Curry2 takes a function with 2 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry2] func Curry2[T0, T1, T2 any](f func(T0, T1) T2) func(T0) func(T1) T2 { - return func(t0 T0) func(t1 T1) T2 { - return func(t1 T1) T2 { - return f(t0, t1) - } - } + return func(t0 T0) func(t1 T1) T2 { + return func(t1 T1) T2 { + return f(t0, t1) + } + } } // Uncurry2 takes a cascade of 2 functions each taking only one parameter and returns a function with 2 parameters . // The inverse function is [Curry2] func Uncurry2[T0, T1, T2 any](f func(T0) func(T1) T2) func(T0, T1) T2 { - return func(t0 T0, t1 T1) T2 { - return f(t0)(t1) - } + return func(t0 T0, t1 T1) T2 { + return f(t0)(t1) + } } // Variadic2 converts a function taking 2 parameters and a final slice into a function with 2 parameters but a final variadic argument func Variadic2[T1, T2, V, R any](f func(T1, T2, []V) R) func(T1, T2, ...V) R { - return func(t1 T1, t2 T2, v ...V) R { - return f(t1, t2, v) - } + return func(t1 T1, t2 T2, v ...V) R { + return f(t1, t2, v) + } } // Unvariadic2 converts a function taking 2 parameters and a final variadic argument into a function with 2 parameters but a final slice argument func Unvariadic2[T1, T2, V, R any](f func(T1, T2, ...V) R) func(T1, T2, []V) R { - return func(t1 T1, t2 T2, v []V) R { - return f(t1, t2, v...) - } + return func(t1 T1, t2 T2, v []V) R { + return f(t1, t2, v...) + } } // Unsliced2 converts a function taking a slice parameter into a function with 2 parameters func Unsliced2[F ~func([]T) R, T, R any](f F) func(T, T) R { - return func(t1, t2 T) R { - return f([]T{t1, t2}) - } + return func(t1, t2 T) R { + return f([]T{t1, t2}) + } } // Pipe3 takes an initial value t0 and successively applies 3 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe3[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, T0, T1, T2, T3 any](t0 T0, f1 F1, f2 F2, f3 F3) T3 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - return t3 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + return t3 } // Flow3 creates a function that takes an initial value t0 and successively applies 3 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow3[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, T0, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T0) T3 { - return func(t0 T0) T3 { - return Pipe3(t0, f1, f2, f3) - } + return func(t0 T0) T3 { + return Pipe3(t0, f1, f2, f3) + } } // Nullary3 creates a parameter less function from a parameter less function and 2 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary3[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func() T3 { - return func() T3 { - return Pipe2(f1(), f2, f3) - } + return func() T3 { + return Pipe2(f1(), f2, f3) + } } // Curry3 takes a function with 3 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry3] func Curry3[T0, T1, T2, T3 any](f func(T0, T1, T2) T3) func(T0) func(T1) func(T2) T3 { - return func(t0 T0) func(t1 T1) func(t2 T2) T3 { - return func(t1 T1) func(t2 T2) T3 { - return func(t2 T2) T3 { - return f(t0, t1, t2) - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) T3 { + return func(t1 T1) func(t2 T2) T3 { + return func(t2 T2) T3 { + return f(t0, t1, t2) + } + } + } } // Uncurry3 takes a cascade of 3 functions each taking only one parameter and returns a function with 3 parameters . // The inverse function is [Curry3] func Uncurry3[T0, T1, T2, T3 any](f func(T0) func(T1) func(T2) T3) func(T0, T1, T2) T3 { - return func(t0 T0, t1 T1, t2 T2) T3 { - return f(t0)(t1)(t2) - } + return func(t0 T0, t1 T1, t2 T2) T3 { + return f(t0)(t1)(t2) + } } // Variadic3 converts a function taking 3 parameters and a final slice into a function with 3 parameters but a final variadic argument func Variadic3[T1, T2, T3, V, R any](f func(T1, T2, T3, []V) R) func(T1, T2, T3, ...V) R { - return func(t1 T1, t2 T2, t3 T3, v ...V) R { - return f(t1, t2, t3, v) - } + return func(t1 T1, t2 T2, t3 T3, v ...V) R { + return f(t1, t2, t3, v) + } } // Unvariadic3 converts a function taking 3 parameters and a final variadic argument into a function with 3 parameters but a final slice argument func Unvariadic3[T1, T2, T3, V, R any](f func(T1, T2, T3, ...V) R) func(T1, T2, T3, []V) R { - return func(t1 T1, t2 T2, t3 T3, v []V) R { - return f(t1, t2, t3, v...) - } + return func(t1 T1, t2 T2, t3 T3, v []V) R { + return f(t1, t2, t3, v...) + } } // Unsliced3 converts a function taking a slice parameter into a function with 3 parameters func Unsliced3[F ~func([]T) R, T, R any](f F) func(T, T, T) R { - return func(t1, t2, t3 T) R { - return f([]T{t1, t2, t3}) - } + return func(t1, t2, t3 T) R { + return f([]T{t1, t2, t3}) + } } // Pipe4 takes an initial value t0 and successively applies 4 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe4[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, T0, T1, T2, T3, T4 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4) T4 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - return t4 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + return t4 } // Flow4 creates a function that takes an initial value t0 and successively applies 4 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow4[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, T0, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T0) T4 { - return func(t0 T0) T4 { - return Pipe4(t0, f1, f2, f3, f4) - } + return func(t0 T0) T4 { + return Pipe4(t0, f1, f2, f3, f4) + } } // Nullary4 creates a parameter less function from a parameter less function and 3 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary4[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func() T4 { - return func() T4 { - return Pipe3(f1(), f2, f3, f4) - } + return func() T4 { + return Pipe3(f1(), f2, f3, f4) + } } // Curry4 takes a function with 4 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry4] func Curry4[T0, T1, T2, T3, T4 any](f func(T0, T1, T2, T3) T4) func(T0) func(T1) func(T2) func(T3) T4 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) T4 { - return func(t1 T1) func(t2 T2) func(t3 T3) T4 { - return func(t2 T2) func(t3 T3) T4 { - return func(t3 T3) T4 { - return f(t0, t1, t2, t3) - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) T4 { + return func(t1 T1) func(t2 T2) func(t3 T3) T4 { + return func(t2 T2) func(t3 T3) T4 { + return func(t3 T3) T4 { + return f(t0, t1, t2, t3) + } + } + } + } } // Uncurry4 takes a cascade of 4 functions each taking only one parameter and returns a function with 4 parameters . // The inverse function is [Curry4] func Uncurry4[T0, T1, T2, T3, T4 any](f func(T0) func(T1) func(T2) func(T3) T4) func(T0, T1, T2, T3) T4 { - return func(t0 T0, t1 T1, t2 T2, t3 T3) T4 { - return f(t0)(t1)(t2)(t3) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) T4 { + return f(t0)(t1)(t2)(t3) + } } // Variadic4 converts a function taking 4 parameters and a final slice into a function with 4 parameters but a final variadic argument func Variadic4[T1, T2, T3, T4, V, R any](f func(T1, T2, T3, T4, []V) R) func(T1, T2, T3, T4, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, v ...V) R { - return f(t1, t2, t3, t4, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, v ...V) R { + return f(t1, t2, t3, t4, v) + } } // Unvariadic4 converts a function taking 4 parameters and a final variadic argument into a function with 4 parameters but a final slice argument func Unvariadic4[T1, T2, T3, T4, V, R any](f func(T1, T2, T3, T4, ...V) R) func(T1, T2, T3, T4, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, v []V) R { - return f(t1, t2, t3, t4, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, v []V) R { + return f(t1, t2, t3, t4, v...) + } } // Unsliced4 converts a function taking a slice parameter into a function with 4 parameters func Unsliced4[F ~func([]T) R, T, R any](f F) func(T, T, T, T) R { - return func(t1, t2, t3, t4 T) R { - return f([]T{t1, t2, t3, t4}) - } + return func(t1, t2, t3, t4 T) R { + return f([]T{t1, t2, t3, t4}) + } } // Pipe5 takes an initial value t0 and successively applies 5 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe5[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, T0, T1, T2, T3, T4, T5 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) T5 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - return t5 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + return t5 } // Flow5 creates a function that takes an initial value t0 and successively applies 5 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow5[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, T0, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T0) T5 { - return func(t0 T0) T5 { - return Pipe5(t0, f1, f2, f3, f4, f5) - } + return func(t0 T0) T5 { + return Pipe5(t0, f1, f2, f3, f4, f5) + } } // Nullary5 creates a parameter less function from a parameter less function and 4 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary5[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func() T5 { - return func() T5 { - return Pipe4(f1(), f2, f3, f4, f5) - } + return func() T5 { + return Pipe4(f1(), f2, f3, f4, f5) + } } // Curry5 takes a function with 5 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry5] func Curry5[T0, T1, T2, T3, T4, T5 any](f func(T0, T1, T2, T3, T4) T5) func(T0) func(T1) func(T2) func(T3) func(T4) T5 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) T5 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) T5 { - return func(t2 T2) func(t3 T3) func(t4 T4) T5 { - return func(t3 T3) func(t4 T4) T5 { - return func(t4 T4) T5 { - return f(t0, t1, t2, t3, t4) - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) T5 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) T5 { + return func(t2 T2) func(t3 T3) func(t4 T4) T5 { + return func(t3 T3) func(t4 T4) T5 { + return func(t4 T4) T5 { + return f(t0, t1, t2, t3, t4) + } + } + } + } + } } // Uncurry5 takes a cascade of 5 functions each taking only one parameter and returns a function with 5 parameters . // The inverse function is [Curry5] func Uncurry5[T0, T1, T2, T3, T4, T5 any](f func(T0) func(T1) func(T2) func(T3) func(T4) T5) func(T0, T1, T2, T3, T4) T5 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) T5 { - return f(t0)(t1)(t2)(t3)(t4) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) T5 { + return f(t0)(t1)(t2)(t3)(t4) + } } // Variadic5 converts a function taking 5 parameters and a final slice into a function with 5 parameters but a final variadic argument func Variadic5[T1, T2, T3, T4, T5, V, R any](f func(T1, T2, T3, T4, T5, []V) R) func(T1, T2, T3, T4, T5, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, v ...V) R { - return f(t1, t2, t3, t4, t5, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, v ...V) R { + return f(t1, t2, t3, t4, t5, v) + } } // Unvariadic5 converts a function taking 5 parameters and a final variadic argument into a function with 5 parameters but a final slice argument func Unvariadic5[T1, T2, T3, T4, T5, V, R any](f func(T1, T2, T3, T4, T5, ...V) R) func(T1, T2, T3, T4, T5, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, v []V) R { - return f(t1, t2, t3, t4, t5, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, v []V) R { + return f(t1, t2, t3, t4, t5, v...) + } } // Unsliced5 converts a function taking a slice parameter into a function with 5 parameters func Unsliced5[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5 T) R { - return f([]T{t1, t2, t3, t4, t5}) - } + return func(t1, t2, t3, t4, t5 T) R { + return f([]T{t1, t2, t3, t4, t5}) + } } // Pipe6 takes an initial value t0 and successively applies 6 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe6[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, T0, T1, T2, T3, T4, T5, T6 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) T6 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - return t6 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + return t6 } // Flow6 creates a function that takes an initial value t0 and successively applies 6 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow6[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, T0, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T0) T6 { - return func(t0 T0) T6 { - return Pipe6(t0, f1, f2, f3, f4, f5, f6) - } + return func(t0 T0) T6 { + return Pipe6(t0, f1, f2, f3, f4, f5, f6) + } } // Nullary6 creates a parameter less function from a parameter less function and 5 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary6[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func() T6 { - return func() T6 { - return Pipe5(f1(), f2, f3, f4, f5, f6) - } + return func() T6 { + return Pipe5(f1(), f2, f3, f4, f5, f6) + } } // Curry6 takes a function with 6 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry6] func Curry6[T0, T1, T2, T3, T4, T5, T6 any](f func(T0, T1, T2, T3, T4, T5) T6) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) T6 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { - return func(t3 T3) func(t4 T4) func(t5 T5) T6 { - return func(t4 T4) func(t5 T5) T6 { - return func(t5 T5) T6 { - return f(t0, t1, t2, t3, t4, t5) - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) T6 { + return func(t3 T3) func(t4 T4) func(t5 T5) T6 { + return func(t4 T4) func(t5 T5) T6 { + return func(t5 T5) T6 { + return f(t0, t1, t2, t3, t4, t5) + } + } + } + } + } + } } // Uncurry6 takes a cascade of 6 functions each taking only one parameter and returns a function with 6 parameters . // The inverse function is [Curry6] func Uncurry6[T0, T1, T2, T3, T4, T5, T6 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) T6) func(T0, T1, T2, T3, T4, T5) T6 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) T6 { - return f(t0)(t1)(t2)(t3)(t4)(t5) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) T6 { + return f(t0)(t1)(t2)(t3)(t4)(t5) + } } // Variadic6 converts a function taking 6 parameters and a final slice into a function with 6 parameters but a final variadic argument func Variadic6[T1, T2, T3, T4, T5, T6, V, R any](f func(T1, T2, T3, T4, T5, T6, []V) R) func(T1, T2, T3, T4, T5, T6, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, v) + } } // Unvariadic6 converts a function taking 6 parameters and a final variadic argument into a function with 6 parameters but a final slice argument func Unvariadic6[T1, T2, T3, T4, T5, T6, V, R any](f func(T1, T2, T3, T4, T5, T6, ...V) R) func(T1, T2, T3, T4, T5, T6, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, v []V) R { - return f(t1, t2, t3, t4, t5, t6, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, v []V) R { + return f(t1, t2, t3, t4, t5, t6, v...) + } } // Unsliced6 converts a function taking a slice parameter into a function with 6 parameters func Unsliced6[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6 T) R { - return f([]T{t1, t2, t3, t4, t5, t6}) - } + return func(t1, t2, t3, t4, t5, t6 T) R { + return f([]T{t1, t2, t3, t4, t5, t6}) + } } // Pipe7 takes an initial value t0 and successively applies 7 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe7[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, T0, T1, T2, T3, T4, T5, T6, T7 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) T7 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - return t7 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + return t7 } // Flow7 creates a function that takes an initial value t0 and successively applies 7 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow7[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, T0, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T0) T7 { - return func(t0 T0) T7 { - return Pipe7(t0, f1, f2, f3, f4, f5, f6, f7) - } + return func(t0 T0) T7 { + return Pipe7(t0, f1, f2, f3, f4, f5, f6, f7) + } } // Nullary7 creates a parameter less function from a parameter less function and 6 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary7[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func() T7 { - return func() T7 { - return Pipe6(f1(), f2, f3, f4, f5, f6, f7) - } + return func() T7 { + return Pipe6(f1(), f2, f3, f4, f5, f6, f7) + } } // Curry7 takes a function with 7 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry7] func Curry7[T0, T1, T2, T3, T4, T5, T6, T7 any](f func(T0, T1, T2, T3, T4, T5, T6) T7) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T7 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { - return func(t4 T4) func(t5 T5) func(t6 T6) T7 { - return func(t5 T5) func(t6 T6) T7 { - return func(t6 T6) T7 { - return f(t0, t1, t2, t3, t4, t5, t6) - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) T7 { + return func(t4 T4) func(t5 T5) func(t6 T6) T7 { + return func(t5 T5) func(t6 T6) T7 { + return func(t6 T6) T7 { + return f(t0, t1, t2, t3, t4, t5, t6) + } + } + } + } + } + } + } } // Uncurry7 takes a cascade of 7 functions each taking only one parameter and returns a function with 7 parameters . // The inverse function is [Curry7] func Uncurry7[T0, T1, T2, T3, T4, T5, T6, T7 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T7) func(T0, T1, T2, T3, T4, T5, T6) T7 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) T7 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) T7 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6) + } } // Variadic7 converts a function taking 7 parameters and a final slice into a function with 7 parameters but a final variadic argument func Variadic7[T1, T2, T3, T4, T5, T6, T7, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, []V) R) func(T1, T2, T3, T4, T5, T6, T7, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, v) + } } // Unvariadic7 converts a function taking 7 parameters and a final variadic argument into a function with 7 parameters but a final slice argument func Unvariadic7[T1, T2, T3, T4, T5, T6, T7, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, v...) + } } // Unsliced7 converts a function taking a slice parameter into a function with 7 parameters func Unsliced7[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7}) - } + return func(t1, t2, t3, t4, t5, t6, t7 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7}) + } } // Pipe8 takes an initial value t0 and successively applies 8 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe8[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, T0, T1, T2, T3, T4, T5, T6, T7, T8 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) T8 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - return t8 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + return t8 } // Flow8 creates a function that takes an initial value t0 and successively applies 8 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow8[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, T0, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T0) T8 { - return func(t0 T0) T8 { - return Pipe8(t0, f1, f2, f3, f4, f5, f6, f7, f8) - } + return func(t0 T0) T8 { + return Pipe8(t0, f1, f2, f3, f4, f5, f6, f7, f8) + } } // Nullary8 creates a parameter less function from a parameter less function and 7 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary8[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func() T8 { - return func() T8 { - return Pipe7(f1(), f2, f3, f4, f5, f6, f7, f8) - } + return func() T8 { + return Pipe7(f1(), f2, f3, f4, f5, f6, f7, f8) + } } // Curry8 takes a function with 8 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry8] func Curry8[T0, T1, T2, T3, T4, T5, T6, T7, T8 any](f func(T0, T1, T2, T3, T4, T5, T6, T7) T8) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T8 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t5 T5) func(t6 T6) func(t7 T7) T8 { - return func(t6 T6) func(t7 T7) T8 { - return func(t7 T7) T8 { - return f(t0, t1, t2, t3, t4, t5, t6, t7) - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t5 T5) func(t6 T6) func(t7 T7) T8 { + return func(t6 T6) func(t7 T7) T8 { + return func(t7 T7) T8 { + return f(t0, t1, t2, t3, t4, t5, t6, t7) + } + } + } + } + } + } + } + } } // Uncurry8 takes a cascade of 8 functions each taking only one parameter and returns a function with 8 parameters . // The inverse function is [Curry8] func Uncurry8[T0, T1, T2, T3, T4, T5, T6, T7, T8 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T8) func(T0, T1, T2, T3, T4, T5, T6, T7) T8 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) T8 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) T8 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7) + } } // Variadic8 converts a function taking 8 parameters and a final slice into a function with 8 parameters but a final variadic argument func Variadic8[T1, T2, T3, T4, T5, T6, T7, T8, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, v) + } } // Unvariadic8 converts a function taking 8 parameters and a final variadic argument into a function with 8 parameters but a final slice argument func Unvariadic8[T1, T2, T3, T4, T5, T6, T7, T8, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, v...) + } } // Unsliced8 converts a function taking a slice parameter into a function with 8 parameters func Unsliced8[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8}) + } } // Pipe9 takes an initial value t0 and successively applies 9 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe9[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) T9 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - return t9 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + return t9 } // Flow9 creates a function that takes an initial value t0 and successively applies 9 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow9[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T0) T9 { - return func(t0 T0) T9 { - return Pipe9(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9) - } + return func(t0 T0) T9 { + return Pipe9(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9) + } } // Nullary9 creates a parameter less function from a parameter less function and 8 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary9[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func() T9 { - return func() T9 { - return Pipe8(f1(), f2, f3, f4, f5, f6, f7, f8, f9) - } + return func() T9 { + return Pipe8(f1(), f2, f3, f4, f5, f6, f7, f8, f9) + } } // Curry9 takes a function with 9 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry9] func Curry9[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8) T9) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T9 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t6 T6) func(t7 T7) func(t8 T8) T9 { - return func(t7 T7) func(t8 T8) T9 { - return func(t8 T8) T9 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t6 T6) func(t7 T7) func(t8 T8) T9 { + return func(t7 T7) func(t8 T8) T9 { + return func(t8 T8) T9 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) + } + } + } + } + } + } + } + } + } } // Uncurry9 takes a cascade of 9 functions each taking only one parameter and returns a function with 9 parameters . // The inverse function is [Curry9] func Uncurry9[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T9) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) T9 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) T9 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) T9 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8) + } } // Variadic9 converts a function taking 9 parameters and a final slice into a function with 9 parameters but a final variadic argument func Variadic9[T1, T2, T3, T4, T5, T6, T7, T8, T9, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, v) + } } // Unvariadic9 converts a function taking 9 parameters and a final variadic argument into a function with 9 parameters but a final slice argument func Unvariadic9[T1, T2, T3, T4, T5, T6, T7, T8, T9, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, v...) + } } // Unsliced9 converts a function taking a slice parameter into a function with 9 parameters func Unsliced9[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9}) + } } // Pipe10 takes an initial value t0 and successively applies 10 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe10[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) T10 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - return t10 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + return t10 } // Flow10 creates a function that takes an initial value t0 and successively applies 10 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow10[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T0) T10 { - return func(t0 T0) T10 { - return Pipe10(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) - } + return func(t0 T0) T10 { + return Pipe10(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + } } // Nullary10 creates a parameter less function from a parameter less function and 9 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary10[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func() T10 { - return func() T10 { - return Pipe9(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10) - } + return func() T10 { + return Pipe9(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10) + } } // Curry10 takes a function with 10 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry10] func Curry10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) T10) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T10 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t7 T7) func(t8 T8) func(t9 T9) T10 { - return func(t8 T8) func(t9 T9) T10 { - return func(t9 T9) T10 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t7 T7) func(t8 T8) func(t9 T9) T10 { + return func(t8 T8) func(t9 T9) T10 { + return func(t9 T9) T10 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) + } + } + } + } + } + } + } + } + } + } } // Uncurry10 takes a cascade of 10 functions each taking only one parameter and returns a function with 10 parameters . // The inverse function is [Curry10] func Uncurry10[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T10) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) T10 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) T10 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) T10 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9) + } } // Variadic10 converts a function taking 10 parameters and a final slice into a function with 10 parameters but a final variadic argument func Variadic10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, v) + } } // Unvariadic10 converts a function taking 10 parameters and a final variadic argument into a function with 10 parameters but a final slice argument func Unvariadic10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, v...) + } } // Unsliced10 converts a function taking a slice parameter into a function with 10 parameters func Unsliced10[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10}) + } } // Pipe11 takes an initial value t0 and successively applies 11 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe11[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11) T11 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - return t11 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + return t11 } // Flow11 creates a function that takes an initial value t0 and successively applies 11 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow11[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11) func(T0) T11 { - return func(t0 T0) T11 { - return Pipe11(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) - } + return func(t0 T0) T11 { + return Pipe11(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) + } } // Nullary11 creates a parameter less function from a parameter less function and 10 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary11[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11) func() T11 { - return func() T11 { - return Pipe10(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) - } + return func() T11 { + return Pipe10(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) + } } // Curry11 takes a function with 11 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry11] func Curry11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) T11) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T11 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t8 T8) func(t9 T9) func(t10 T10) T11 { - return func(t9 T9) func(t10 T10) T11 { - return func(t10 T10) T11 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t8 T8) func(t9 T9) func(t10 T10) T11 { + return func(t9 T9) func(t10 T10) T11 { + return func(t10 T10) T11 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + } + } + } + } + } + } + } + } + } + } + } } // Uncurry11 takes a cascade of 11 functions each taking only one parameter and returns a function with 11 parameters . // The inverse function is [Curry11] func Uncurry11[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T11) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) T11 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) T11 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) T11 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10) + } } // Variadic11 converts a function taking 11 parameters and a final slice into a function with 11 parameters but a final variadic argument func Variadic11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, v) + } } // Unvariadic11 converts a function taking 11 parameters and a final variadic argument into a function with 11 parameters but a final slice argument func Unvariadic11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, v...) + } } // Unsliced11 converts a function taking a slice parameter into a function with 11 parameters func Unsliced11[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11}) + } } // Pipe12 takes an initial value t0 and successively applies 12 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe12[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12) T12 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - return t12 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + return t12 } // Flow12 creates a function that takes an initial value t0 and successively applies 12 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow12[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12) func(T0) T12 { - return func(t0 T0) T12 { - return Pipe12(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) - } + return func(t0 T0) T12 { + return Pipe12(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) + } } // Nullary12 creates a parameter less function from a parameter less function and 11 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary12[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12) func() T12 { - return func() T12 { - return Pipe11(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) - } + return func() T12 { + return Pipe11(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) + } } // Curry12 takes a function with 12 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry12] func Curry12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) T12) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) T12 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t9 T9) func(t10 T10) func(t11 T11) T12 { - return func(t10 T10) func(t11 T11) T12 { - return func(t11 T11) T12 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t9 T9) func(t10 T10) func(t11 T11) T12 { + return func(t10 T10) func(t11 T11) T12 { + return func(t11 T11) T12 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry12 takes a cascade of 12 functions each taking only one parameter and returns a function with 12 parameters . // The inverse function is [Curry12] func Uncurry12[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) T12) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) T12 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11) T12 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11) T12 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11) + } } // Variadic12 converts a function taking 12 parameters and a final slice into a function with 12 parameters but a final variadic argument func Variadic12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, v) + } } // Unvariadic12 converts a function taking 12 parameters and a final variadic argument into a function with 12 parameters but a final slice argument func Unvariadic12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, v...) + } } // Unsliced12 converts a function taking a slice parameter into a function with 12 parameters func Unsliced12[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12}) + } } // Pipe13 takes an initial value t0 and successively applies 13 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe13[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13) T13 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - return t13 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + return t13 } // Flow13 creates a function that takes an initial value t0 and successively applies 13 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow13[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13) func(T0) T13 { - return func(t0 T0) T13 { - return Pipe13(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13) - } + return func(t0 T0) T13 { + return Pipe13(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13) + } } // Nullary13 creates a parameter less function from a parameter less function and 12 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary13[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13) func() T13 { - return func() T13 { - return Pipe12(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13) - } + return func() T13 { + return Pipe12(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13) + } } // Curry13 takes a function with 13 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry13] func Curry13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) T13) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) T13 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t10 T10) func(t11 T11) func(t12 T12) T13 { - return func(t11 T11) func(t12 T12) T13 { - return func(t12 T12) T13 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t10 T10) func(t11 T11) func(t12 T12) T13 { + return func(t11 T11) func(t12 T12) T13 { + return func(t12 T12) T13 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry13 takes a cascade of 13 functions each taking only one parameter and returns a function with 13 parameters . // The inverse function is [Curry13] func Uncurry13[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) T13) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) T13 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12) T13 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12) T13 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12) + } } // Variadic13 converts a function taking 13 parameters and a final slice into a function with 13 parameters but a final variadic argument func Variadic13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, v) + } } // Unvariadic13 converts a function taking 13 parameters and a final variadic argument into a function with 13 parameters but a final slice argument func Unvariadic13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, v...) + } } // Unsliced13 converts a function taking a slice parameter into a function with 13 parameters func Unsliced13[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13}) + } } // Pipe14 takes an initial value t0 and successively applies 14 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe14[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14) T14 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - return t14 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + return t14 } // Flow14 creates a function that takes an initial value t0 and successively applies 14 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow14[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14) func(T0) T14 { - return func(t0 T0) T14 { - return Pipe14(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) - } + return func(t0 T0) T14 { + return Pipe14(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) + } } // Nullary14 creates a parameter less function from a parameter less function and 13 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary14[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14) func() T14 { - return func() T14 { - return Pipe13(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) - } + return func() T14 { + return Pipe13(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) + } } // Curry14 takes a function with 14 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry14] func Curry14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) T14) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) T14 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t11 T11) func(t12 T12) func(t13 T13) T14 { - return func(t12 T12) func(t13 T13) T14 { - return func(t13 T13) T14 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t11 T11) func(t12 T12) func(t13 T13) T14 { + return func(t12 T12) func(t13 T13) T14 { + return func(t13 T13) T14 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry14 takes a cascade of 14 functions each taking only one parameter and returns a function with 14 parameters . // The inverse function is [Curry14] func Uncurry14[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) T14) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) T14 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13) T14 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13) T14 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13) + } } // Variadic14 converts a function taking 14 parameters and a final slice into a function with 14 parameters but a final variadic argument func Variadic14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, v) + } } // Unvariadic14 converts a function taking 14 parameters and a final variadic argument into a function with 14 parameters but a final slice argument func Unvariadic14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, v...) + } } // Unsliced14 converts a function taking a slice parameter into a function with 14 parameters func Unsliced14[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14}) + } } // Pipe15 takes an initial value t0 and successively applies 15 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe15[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15) T15 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - return t15 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + return t15 } // Flow15 creates a function that takes an initial value t0 and successively applies 15 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow15[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15) func(T0) T15 { - return func(t0 T0) T15 { - return Pipe15(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15) - } + return func(t0 T0) T15 { + return Pipe15(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15) + } } // Nullary15 creates a parameter less function from a parameter less function and 14 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary15[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15) func() T15 { - return func() T15 { - return Pipe14(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15) - } + return func() T15 { + return Pipe14(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15) + } } // Curry15 takes a function with 15 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry15] func Curry15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) T15) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) T15 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t12 T12) func(t13 T13) func(t14 T14) T15 { - return func(t13 T13) func(t14 T14) T15 { - return func(t14 T14) T15 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t12 T12) func(t13 T13) func(t14 T14) T15 { + return func(t13 T13) func(t14 T14) T15 { + return func(t14 T14) T15 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry15 takes a cascade of 15 functions each taking only one parameter and returns a function with 15 parameters . // The inverse function is [Curry15] func Uncurry15[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) T15) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) T15 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14) T15 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14) T15 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14) + } } // Variadic15 converts a function taking 15 parameters and a final slice into a function with 15 parameters but a final variadic argument func Variadic15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, v) + } } // Unvariadic15 converts a function taking 15 parameters and a final variadic argument into a function with 15 parameters but a final slice argument func Unvariadic15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, v...) + } } // Unsliced15 converts a function taking a slice parameter into a function with 15 parameters func Unsliced15[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15}) + } } // Pipe16 takes an initial value t0 and successively applies 16 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe16[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16) T16 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - t16 := f16(t15) - return t16 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + t16 := f16(t15) + return t16 } // Flow16 creates a function that takes an initial value t0 and successively applies 16 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow16[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16) func(T0) T16 { - return func(t0 T0) T16 { - return Pipe16(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16) - } + return func(t0 T0) T16 { + return Pipe16(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16) + } } // Nullary16 creates a parameter less function from a parameter less function and 15 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary16[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16) func() T16 { - return func() T16 { - return Pipe15(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16) - } + return func() T16 { + return Pipe15(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16) + } } // Curry16 takes a function with 16 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry16] func Curry16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) T16) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) T16 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t13 T13) func(t14 T14) func(t15 T15) T16 { - return func(t14 T14) func(t15 T15) T16 { - return func(t15 T15) T16 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t13 T13) func(t14 T14) func(t15 T15) T16 { + return func(t14 T14) func(t15 T15) T16 { + return func(t15 T15) T16 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry16 takes a cascade of 16 functions each taking only one parameter and returns a function with 16 parameters . // The inverse function is [Curry16] func Uncurry16[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) T16) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) T16 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15) T16 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15) T16 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15) + } } // Variadic16 converts a function taking 16 parameters and a final slice into a function with 16 parameters but a final variadic argument func Variadic16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, v) + } } // Unvariadic16 converts a function taking 16 parameters and a final variadic argument into a function with 16 parameters but a final slice argument func Unvariadic16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, v...) + } } // Unsliced16 converts a function taking a slice parameter into a function with 16 parameters func Unsliced16[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16}) + } } // Pipe17 takes an initial value t0 and successively applies 17 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe17[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17) T17 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - t16 := f16(t15) - t17 := f17(t16) - return t17 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + t16 := f16(t15) + t17 := f17(t16) + return t17 } // Flow17 creates a function that takes an initial value t0 and successively applies 17 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow17[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17) func(T0) T17 { - return func(t0 T0) T17 { - return Pipe17(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17) - } + return func(t0 T0) T17 { + return Pipe17(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17) + } } // Nullary17 creates a parameter less function from a parameter less function and 16 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary17[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17) func() T17 { - return func() T17 { - return Pipe16(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17) - } + return func() T17 { + return Pipe16(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17) + } } // Curry17 takes a function with 17 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry17] func Curry17[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) T17) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) T17 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t14 T14) func(t15 T15) func(t16 T16) T17 { - return func(t15 T15) func(t16 T16) T17 { - return func(t16 T16) T17 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t14 T14) func(t15 T15) func(t16 T16) T17 { + return func(t15 T15) func(t16 T16) T17 { + return func(t16 T16) T17 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry17 takes a cascade of 17 functions each taking only one parameter and returns a function with 17 parameters . // The inverse function is [Curry17] func Uncurry17[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) T17) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) T17 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16) T17 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16) T17 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16) + } } // Variadic17 converts a function taking 17 parameters and a final slice into a function with 17 parameters but a final variadic argument func Variadic17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, v) + } } // Unvariadic17 converts a function taking 17 parameters and a final variadic argument into a function with 17 parameters but a final slice argument func Unvariadic17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, v...) + } } // Unsliced17 converts a function taking a slice parameter into a function with 17 parameters func Unsliced17[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17}) + } } // Pipe18 takes an initial value t0 and successively applies 18 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe18[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18) T18 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - t16 := f16(t15) - t17 := f17(t16) - t18 := f18(t17) - return t18 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + t16 := f16(t15) + t17 := f17(t16) + t18 := f18(t17) + return t18 } // Flow18 creates a function that takes an initial value t0 and successively applies 18 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow18[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18) func(T0) T18 { - return func(t0 T0) T18 { - return Pipe18(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18) - } + return func(t0 T0) T18 { + return Pipe18(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18) + } } // Nullary18 creates a parameter less function from a parameter less function and 17 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary18[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18) func() T18 { - return func() T18 { - return Pipe17(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18) - } + return func() T18 { + return Pipe17(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18) + } } // Curry18 takes a function with 18 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry18] func Curry18[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) T18) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) T18 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t15 T15) func(t16 T16) func(t17 T17) T18 { - return func(t16 T16) func(t17 T17) T18 { - return func(t17 T17) T18 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t15 T15) func(t16 T16) func(t17 T17) T18 { + return func(t16 T16) func(t17 T17) T18 { + return func(t17 T17) T18 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry18 takes a cascade of 18 functions each taking only one parameter and returns a function with 18 parameters . // The inverse function is [Curry18] func Uncurry18[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) T18) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) T18 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17) T18 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17) T18 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17) + } } // Variadic18 converts a function taking 18 parameters and a final slice into a function with 18 parameters but a final variadic argument func Variadic18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, v) + } } // Unvariadic18 converts a function taking 18 parameters and a final variadic argument into a function with 18 parameters but a final slice argument func Unvariadic18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, v...) + } } // Unsliced18 converts a function taking a slice parameter into a function with 18 parameters func Unsliced18[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18}) + } } // Pipe19 takes an initial value t0 and successively applies 19 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe19[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19) T19 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - t16 := f16(t15) - t17 := f17(t16) - t18 := f18(t17) - t19 := f19(t18) - return t19 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + t16 := f16(t15) + t17 := f17(t16) + t18 := f18(t17) + t19 := f19(t18) + return t19 } // Flow19 creates a function that takes an initial value t0 and successively applies 19 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow19[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19) func(T0) T19 { - return func(t0 T0) T19 { - return Pipe19(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19) - } + return func(t0 T0) T19 { + return Pipe19(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19) + } } // Nullary19 creates a parameter less function from a parameter less function and 18 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary19[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19) func() T19 { - return func() T19 { - return Pipe18(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19) - } + return func() T19 { + return Pipe18(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19) + } } // Curry19 takes a function with 19 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry19] func Curry19[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) T19) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) func(T18) T19 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t16 T16) func(t17 T17) func(t18 T18) T19 { - return func(t17 T17) func(t18 T18) T19 { - return func(t18 T18) T19 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t16 T16) func(t17 T17) func(t18 T18) T19 { + return func(t17 T17) func(t18 T18) T19 { + return func(t18 T18) T19 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry19 takes a cascade of 19 functions each taking only one parameter and returns a function with 19 parameters . // The inverse function is [Curry19] func Uncurry19[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) func(T18) T19) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) T19 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18) T19 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17)(t18) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18) T19 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17)(t18) + } } // Variadic19 converts a function taking 19 parameters and a final slice into a function with 19 parameters but a final variadic argument func Variadic19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, v) + } } // Unvariadic19 converts a function taking 19 parameters and a final variadic argument into a function with 19 parameters but a final slice argument func Unvariadic19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, v...) + } } // Unsliced19 converts a function taking a slice parameter into a function with 19 parameters func Unsliced19[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19}) + } } // Pipe20 takes an initial value t0 and successively applies 20 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Pipe20[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, F20 ~func(T19) T20, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 any](t0 T0, f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19, f20 F20) T20 { - t1 := f1(t0) - t2 := f2(t1) - t3 := f3(t2) - t4 := f4(t3) - t5 := f5(t4) - t6 := f6(t5) - t7 := f7(t6) - t8 := f8(t7) - t9 := f9(t8) - t10 := f10(t9) - t11 := f11(t10) - t12 := f12(t11) - t13 := f13(t12) - t14 := f14(t13) - t15 := f15(t14) - t16 := f16(t15) - t17 := f17(t16) - t18 := f18(t17) - t19 := f19(t18) - t20 := f20(t19) - return t20 + t1 := f1(t0) + t2 := f2(t1) + t3 := f3(t2) + t4 := f4(t3) + t5 := f5(t4) + t6 := f6(t5) + t7 := f7(t6) + t8 := f8(t7) + t9 := f9(t8) + t10 := f10(t9) + t11 := f11(t10) + t12 := f12(t11) + t13 := f13(t12) + t14 := f14(t13) + t15 := f15(t14) + t16 := f16(t15) + t17 := f17(t16) + t18 := f18(t17) + t19 := f19(t18) + t20 := f20(t19) + return t20 } // Flow20 creates a function that takes an initial value t0 and successively applies 20 functions where the input of a function is the return value of the previous function // The final return value is the result of the last function application func Flow20[F1 ~func(T0) T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, F20 ~func(T19) T20, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19, f20 F20) func(T0) T20 { - return func(t0 T0) T20 { - return Pipe20(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) - } + return func(t0 T0) T20 { + return Pipe20(t0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) + } } // Nullary20 creates a parameter less function from a parameter less function and 19 functions. When executed the first parameter less function gets executed and then the result is piped through the remaining functions func Nullary20[F1 ~func() T1, F2 ~func(T1) T2, F3 ~func(T2) T3, F4 ~func(T3) T4, F5 ~func(T4) T5, F6 ~func(T5) T6, F7 ~func(T6) T7, F8 ~func(T7) T8, F9 ~func(T8) T9, F10 ~func(T9) T10, F11 ~func(T10) T11, F12 ~func(T11) T12, F13 ~func(T12) T13, F14 ~func(T13) T14, F15 ~func(T14) T15, F16 ~func(T15) T16, F17 ~func(T16) T17, F18 ~func(T17) T18, F19 ~func(T18) T19, F20 ~func(T19) T20, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10, f11 F11, f12 F12, f13 F13, f14 F14, f15 F15, f16 F16, f17 F17, f18 F18, f19 F19, f20 F20) func() T20 { - return func() T20 { - return Pipe19(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) - } + return func() T20 { + return Pipe19(f1(), f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) + } } // Curry20 takes a function with 20 parameters and returns a cascade of functions each taking only one parameter. // The inverse function is [Uncurry20] func Curry20[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 any](f func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) T20) func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) func(T18) func(T19) T20 { - return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t17 T17) func(t18 T18) func(t19 T19) T20 { - return func(t18 T18) func(t19 T19) T20 { - return func(t19 T19) T20 { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + return func(t0 T0) func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t1 T1) func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t2 T2) func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t3 T3) func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t4 T4) func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t5 T5) func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t6 T6) func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t7 T7) func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t8 T8) func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t9 T9) func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t10 T10) func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t11 T11) func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t12 T12) func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t13 T13) func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t14 T14) func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t15 T15) func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t16 T16) func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t17 T17) func(t18 T18) func(t19 T19) T20 { + return func(t18 T18) func(t19 T19) T20 { + return func(t19 T19) T20 { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } } // Uncurry20 takes a cascade of 20 functions each taking only one parameter and returns a function with 20 parameters . // The inverse function is [Curry20] func Uncurry20[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 any](f func(T0) func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) func(T11) func(T12) func(T13) func(T14) func(T15) func(T16) func(T17) func(T18) func(T19) T20) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) T20 { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19) T20 { - return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17)(t18)(t19) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19) T20 { + return f(t0)(t1)(t2)(t3)(t4)(t5)(t6)(t7)(t8)(t9)(t10)(t11)(t12)(t13)(t14)(t15)(t16)(t17)(t18)(t19) + } } // Variadic20 converts a function taking 20 parameters and a final slice into a function with 20 parameters but a final variadic argument func Variadic20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, []V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, ...V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, t20 T20, v ...V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, v) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, t20 T20, v ...V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, v) + } } // Unvariadic20 converts a function taking 20 parameters and a final variadic argument into a function with 20 parameters but a final slice argument func Unvariadic20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, V, R any](f func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, ...V) R) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, []V) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, t20 T20, v []V) R { - return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, v...) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10, t11 T11, t12 T12, t13 T13, t14 T14, t15 T15, t16 T16, t17 T17, t18 T18, t19 T19, t20 T20, v []V) R { + return f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, v...) + } } // Unsliced20 converts a function taking a slice parameter into a function with 20 parameters func Unsliced20[F ~func([]T) R, T, R any](f F) func(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) R { - return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 T) R { - return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20}) - } + return func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 T) R { + return f([]T{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20}) + } } diff --git a/identity/gen.go b/identity/gen.go index f266ce3..d6b7a18 100644 --- a/identity/gen.go +++ b/identity/gen.go @@ -4,7 +4,6 @@ package identity - import ( A "github.com/IBM/fp-go/internal/apply" T "github.com/IBM/fp-go/tuple" @@ -12,495 +11,495 @@ import ( // SequenceT1 converts 1 parameters of [T] into a [Tuple1]. func SequenceT1[T1 any](t1 T1) T.Tuple1[T1] { - return A.SequenceT1( - Map[T1, T.Tuple1[T1]], - t1, - ) + return A.SequenceT1( + Map[T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [Tuple1] of [T] into an [Tuple1]. func SequenceTuple1[T1 any](t T.Tuple1[T1]) T.Tuple1[T1] { - return A.SequenceTuple1( - Map[T1, T.Tuple1[T1]], - t, - ) + return A.SequenceTuple1( + Map[T1, T.Tuple1[T1]], + t, + ) } // TraverseTuple1 converts a [Tuple1] of [A] via transformation functions transforming [A] to [A] into a [Tuple1]. -func TraverseTuple1[F1 ~func(A1) T1, A1, T1 any](f1 F1) func (T.Tuple1[A1]) T.Tuple1[T1] { - return func(t T.Tuple1[A1]) T.Tuple1[T1] { - return A.TraverseTuple1( - Map[T1, T.Tuple1[T1]], - f1, - t, - ) - } +func TraverseTuple1[F1 ~func(A1) T1, A1, T1 any](f1 F1) func(T.Tuple1[A1]) T.Tuple1[T1] { + return func(t T.Tuple1[A1]) T.Tuple1[T1] { + return A.TraverseTuple1( + Map[T1, T.Tuple1[T1]], + f1, + t, + ) + } } // SequenceT2 converts 2 parameters of [T] into a [Tuple2]. func SequenceT2[T1, T2 any](t1 T1, t2 T2) T.Tuple2[T1, T2] { - return A.SequenceT2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - t1, - t2, - ) + return A.SequenceT2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + t1, + t2, + ) } // SequenceTuple2 converts a [Tuple2] of [T] into an [Tuple2]. func SequenceTuple2[T1, T2 any](t T.Tuple2[T1, T2]) T.Tuple2[T1, T2] { - return A.SequenceTuple2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - t, - ) + return A.SequenceTuple2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + t, + ) } // TraverseTuple2 converts a [Tuple2] of [A] via transformation functions transforming [A] to [A] into a [Tuple2]. -func TraverseTuple2[F1 ~func(A1) T1, F2 ~func(A2) T2, A1, T1, A2, T2 any](f1 F1, f2 F2) func (T.Tuple2[A1, A2]) T.Tuple2[T1, T2] { - return func(t T.Tuple2[A1, A2]) T.Tuple2[T1, T2] { - return A.TraverseTuple2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - f1, - f2, - t, - ) - } +func TraverseTuple2[F1 ~func(A1) T1, F2 ~func(A2) T2, A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) T.Tuple2[T1, T2] { + return func(t T.Tuple2[A1, A2]) T.Tuple2[T1, T2] { + return A.TraverseTuple2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + f1, + f2, + t, + ) + } } // SequenceT3 converts 3 parameters of [T] into a [Tuple3]. func SequenceT3[T1, T2, T3 any](t1 T1, t2 T2, t3 T3) T.Tuple3[T1, T2, T3] { - return A.SequenceT3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [Tuple3] of [T] into an [Tuple3]. func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[T1, T2, T3]) T.Tuple3[T1, T2, T3] { - return A.SequenceTuple3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - t, - ) + return A.SequenceTuple3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + t, + ) } // TraverseTuple3 converts a [Tuple3] of [A] via transformation functions transforming [A] to [A] into a [Tuple3]. -func TraverseTuple3[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func (T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] { - return func(t T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] { - return A.TraverseTuple3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - f1, - f2, - f3, - t, - ) - } +func TraverseTuple3[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] { + return func(t T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] { + return A.TraverseTuple3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + f1, + f2, + f3, + t, + ) + } } // SequenceT4 converts 4 parameters of [T] into a [Tuple4]. func SequenceT4[T1, T2, T3, T4 any](t1 T1, t2 T2, t3 T3, t4 T4) T.Tuple4[T1, T2, T3, T4] { - return A.SequenceT4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [Tuple4] of [T] into an [Tuple4]. func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[T1, T2, T3, T4]) T.Tuple4[T1, T2, T3, T4] { - return A.SequenceTuple4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - t, - ) + return A.SequenceTuple4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + t, + ) } // TraverseTuple4 converts a [Tuple4] of [A] via transformation functions transforming [A] to [A] into a [Tuple4]. -func TraverseTuple4[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func (T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] { - return func(t T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] { - return A.TraverseTuple4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - f1, - f2, - f3, - f4, - t, - ) - } +func TraverseTuple4[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] { + return func(t T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] { + return A.TraverseTuple4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + f1, + f2, + f3, + f4, + t, + ) + } } // SequenceT5 converts 5 parameters of [T] into a [Tuple5]. func SequenceT5[T1, T2, T3, T4, T5 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) T.Tuple5[T1, T2, T3, T4, T5] { - return A.SequenceT5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [Tuple5] of [T] into an [Tuple5]. func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[T1, T2, T3, T4, T5]) T.Tuple5[T1, T2, T3, T4, T5] { - return A.SequenceTuple5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - t, - ) + return A.SequenceTuple5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + t, + ) } // TraverseTuple5 converts a [Tuple5] of [A] via transformation functions transforming [A] to [A] into a [Tuple5]. -func TraverseTuple5[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func (T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] { - return A.TraverseTuple5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } +func TraverseTuple5[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] { + return A.TraverseTuple5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // SequenceT6 converts 6 parameters of [T] into a [Tuple6]. func SequenceT6[T1, T2, T3, T4, T5, T6 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) T.Tuple6[T1, T2, T3, T4, T5, T6] { - return A.SequenceT6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [Tuple6] of [T] into an [Tuple6]. func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[T1, T2, T3, T4, T5, T6]) T.Tuple6[T1, T2, T3, T4, T5, T6] { - return A.SequenceTuple6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - t, - ) + return A.SequenceTuple6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + t, + ) } // TraverseTuple6 converts a [Tuple6] of [A] via transformation functions transforming [A] to [A] into a [Tuple6]. -func TraverseTuple6[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func (T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] { - return A.TraverseTuple6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } +func TraverseTuple6[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] { + return A.TraverseTuple6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // SequenceT7 converts 7 parameters of [T] into a [Tuple7]. func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return A.SequenceT7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [Tuple7] of [T] into an [Tuple7]. func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return A.SequenceTuple7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - t, - ) + return A.SequenceTuple7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + t, + ) } // TraverseTuple7 converts a [Tuple7] of [A] via transformation functions transforming [A] to [A] into a [Tuple7]. -func TraverseTuple7[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func (T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return A.TraverseTuple7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } +func TraverseTuple7[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { + return A.TraverseTuple7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // SequenceT8 converts 8 parameters of [T] into a [Tuple8]. func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return A.SequenceT8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [Tuple8] of [T] into an [Tuple8]. func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return A.SequenceTuple8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - t, - ) + return A.SequenceTuple8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + t, + ) } // TraverseTuple8 converts a [Tuple8] of [A] via transformation functions transforming [A] to [A] into a [Tuple8]. -func TraverseTuple8[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func (T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return A.TraverseTuple8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } +func TraverseTuple8[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { + return A.TraverseTuple8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // SequenceT9 converts 9 parameters of [T] into a [Tuple9]. func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return A.SequenceT9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [Tuple9] of [T] into an [Tuple9]. func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return A.SequenceTuple9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - t, - ) + return A.SequenceTuple9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + t, + ) } // TraverseTuple9 converts a [Tuple9] of [A] via transformation functions transforming [A] to [A] into a [Tuple9]. -func TraverseTuple9[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func (T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return A.TraverseTuple9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } +func TraverseTuple9[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { + return A.TraverseTuple9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // SequenceT10 converts 10 parameters of [T] into a [Tuple10]. func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return A.SequenceT10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [Tuple10] of [T] into an [Tuple10]. func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return A.SequenceTuple10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - t, - ) + return A.SequenceTuple10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + t, + ) } // TraverseTuple10 converts a [Tuple10] of [A] via transformation functions transforming [A] to [A] into a [Tuple10]. -func TraverseTuple10[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, F10 ~func(A10) T10, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func (T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return A.TraverseTuple10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } +func TraverseTuple10[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, F10 ~func(A10) T10, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + return A.TraverseTuple10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } diff --git a/internal/apply/gen.go b/internal/apply/gen.go index dd9b333..a3ec3e3 100644 --- a/internal/apply/gen.go +++ b/internal/apply/gen.go @@ -4,7 +4,6 @@ package apply - import ( F "github.com/IBM/fp-go/function" T "github.com/IBM/fp-go/tuple" @@ -12,1525 +11,1525 @@ import ( // tupleConstructor1 returns a curried version of [T.MakeTuple1] func tupleConstructor1[T1 any]() func(T1) T.Tuple1[T1] { - return F.Curry1(T.MakeTuple1[T1]) + return F.Curry1(T.MakeTuple1[T1]) } // SequenceT1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 1 higher higher kinded types and returns a higher kinded type of a [Tuple1] with the resolved values. func SequenceT1[ - MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, - T1, - HKT_T1, // HKT[T1] - HKT_TUPLE1 any, // HKT[Tuple1[T1]] + MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, + T1, + HKT_T1, // HKT[T1] + HKT_TUPLE1 any, // HKT[Tuple1[T1]] ]( - fmap MAP, - t1 HKT_T1, + fmap MAP, + t1 HKT_T1, ) HKT_TUPLE1 { - return F.Pipe1( - t1, - fmap(tupleConstructor1[T1]()), -) + return F.Pipe1( + t1, + fmap(tupleConstructor1[T1]()), + ) } // SequenceTuple1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple1] of higher higher kinded types and returns a higher kinded type of a [Tuple1] with the resolved values. func SequenceTuple1[ - MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, - T1, - HKT_T1, // HKT[T1] - HKT_TUPLE1 any, // HKT[Tuple1[T1]] + MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, + T1, + HKT_T1, // HKT[T1] + HKT_TUPLE1 any, // HKT[Tuple1[T1]] ]( - fmap MAP, - t T.Tuple1[HKT_T1], + fmap MAP, + t T.Tuple1[HKT_T1], ) HKT_TUPLE1 { - return F.Pipe1( - t.F1, - fmap(tupleConstructor1[T1]()), -) + return F.Pipe1( + t.F1, + fmap(tupleConstructor1[T1]()), + ) } // TraverseTuple1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple1] of base types and 1 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple1] with the resolved values. func TraverseTuple1[ - MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, - F1 ~func(A1) HKT_T1, - A1, T1, - HKT_T1, // HKT[T1] - HKT_TUPLE1 any, // HKT[Tuple1[T1]] + MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1, + F1 ~func(A1) HKT_T1, + A1, T1, + HKT_T1, // HKT[T1] + HKT_TUPLE1 any, // HKT[Tuple1[T1]] ]( - fmap MAP, - f1 F1, - t T.Tuple1[A1], + fmap MAP, + f1 F1, + t T.Tuple1[A1], ) HKT_TUPLE1 { - return F.Pipe1( - f1(t.F1), - fmap(tupleConstructor1[T1]()), -) + return F.Pipe1( + f1(t.F1), + fmap(tupleConstructor1[T1]()), + ) } // tupleConstructor2 returns a curried version of [T.MakeTuple2] func tupleConstructor2[T1, T2 any]() func(T1) func(T2) T.Tuple2[T1, T2] { - return F.Curry2(T.MakeTuple2[T1, T2]) + return F.Curry2(T.MakeTuple2[T1, T2]) } // SequenceT2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 2 higher higher kinded types and returns a higher kinded type of a [Tuple2] with the resolved values. func SequenceT2[ - MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, - AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, - T1, - T2, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] - HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] + MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, + AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, + T1, + T2, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] + HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] ]( - fmap MAP, - fap1 AP1, - t1 HKT_T1, - t2 HKT_T2, + fmap MAP, + fap1 AP1, + t1 HKT_T1, + t2 HKT_T2, ) HKT_TUPLE2 { - return F.Pipe2( - t1, - fmap(tupleConstructor2[T1, T2]()), - fap1(t2), -) + return F.Pipe2( + t1, + fmap(tupleConstructor2[T1, T2]()), + fap1(t2), + ) } // SequenceTuple2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple2] of higher higher kinded types and returns a higher kinded type of a [Tuple2] with the resolved values. func SequenceTuple2[ - MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, - AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, - T1, - T2, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] - HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] + MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, + AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, + T1, + T2, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] + HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] ]( - fmap MAP, - fap1 AP1, - t T.Tuple2[HKT_T1, HKT_T2], + fmap MAP, + fap1 AP1, + t T.Tuple2[HKT_T1, HKT_T2], ) HKT_TUPLE2 { - return F.Pipe2( - t.F1, - fmap(tupleConstructor2[T1, T2]()), - fap1(t.F2), -) + return F.Pipe2( + t.F1, + fmap(tupleConstructor2[T1, T2]()), + fap1(t.F2), + ) } // TraverseTuple2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple2] of base types and 2 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple2] with the resolved values. func TraverseTuple2[ - MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, - AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - A1, T1, - A2, T2, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] - HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] + MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2, + AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + A1, T1, + A2, T2, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]] + HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]] ]( - fmap MAP, - fap1 AP1, - f1 F1, - f2 F2, - t T.Tuple2[A1, A2], + fmap MAP, + fap1 AP1, + f1 F1, + f2 F2, + t T.Tuple2[A1, A2], ) HKT_TUPLE2 { - return F.Pipe2( - f1(t.F1), - fmap(tupleConstructor2[T1, T2]()), - fap1(f2(t.F2)), -) + return F.Pipe2( + f1(t.F1), + fmap(tupleConstructor2[T1, T2]()), + fap1(f2(t.F2)), + ) } // tupleConstructor3 returns a curried version of [T.MakeTuple3] func tupleConstructor3[T1, T2, T3 any]() func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3] { - return F.Curry3(T.MakeTuple3[T1, T2, T3]) + return F.Curry3(T.MakeTuple3[T1, T2, T3]) } // SequenceT3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 3 higher higher kinded types and returns a higher kinded type of a [Tuple3] with the resolved values. func SequenceT3[ - MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, - AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, - T1, - T2, - T3, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] - HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] - HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] + MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, + AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, + T1, + T2, + T3, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] + HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] + HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, + fmap MAP, + fap1 AP1, + fap2 AP2, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, ) HKT_TUPLE3 { - return F.Pipe3( - t1, - fmap(tupleConstructor3[T1, T2, T3]()), - fap1(t2), - fap2(t3), -) + return F.Pipe3( + t1, + fmap(tupleConstructor3[T1, T2, T3]()), + fap1(t2), + fap2(t3), + ) } // SequenceTuple3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple3] of higher higher kinded types and returns a higher kinded type of a [Tuple3] with the resolved values. func SequenceTuple3[ - MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, - AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, - T1, - T2, - T3, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] - HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] - HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] + MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, + AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, + T1, + T2, + T3, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] + HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] + HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - t T.Tuple3[HKT_T1, HKT_T2, HKT_T3], + fmap MAP, + fap1 AP1, + fap2 AP2, + t T.Tuple3[HKT_T1, HKT_T2, HKT_T3], ) HKT_TUPLE3 { - return F.Pipe3( - t.F1, - fmap(tupleConstructor3[T1, T2, T3]()), - fap1(t.F2), - fap2(t.F3), -) + return F.Pipe3( + t.F1, + fmap(tupleConstructor3[T1, T2, T3]()), + fap1(t.F2), + fap2(t.F3), + ) } // TraverseTuple3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple3] of base types and 3 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple3] with the resolved values. func TraverseTuple3[ - MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, - AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - A1, T1, - A2, T2, - A3, T3, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] - HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] - HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] + MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3, + AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + A1, T1, + A2, T2, + A3, T3, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]] + HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]] + HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - f1 F1, - f2 F2, - f3 F3, - t T.Tuple3[A1, A2, A3], + fmap MAP, + fap1 AP1, + fap2 AP2, + f1 F1, + f2 F2, + f3 F3, + t T.Tuple3[A1, A2, A3], ) HKT_TUPLE3 { - return F.Pipe3( - f1(t.F1), - fmap(tupleConstructor3[T1, T2, T3]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), -) + return F.Pipe3( + f1(t.F1), + fmap(tupleConstructor3[T1, T2, T3]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + ) } // tupleConstructor4 returns a curried version of [T.MakeTuple4] func tupleConstructor4[T1, T2, T3, T4 any]() func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4] { - return F.Curry4(T.MakeTuple4[T1, T2, T3, T4]) + return F.Curry4(T.MakeTuple4[T1, T2, T3, T4]) } // SequenceT4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 4 higher higher kinded types and returns a higher kinded type of a [Tuple4] with the resolved values. func SequenceT4[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, - AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, - T1, - T2, - T3, - T4, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, + AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, + T1, + T2, + T3, + T4, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, ) HKT_TUPLE4 { - return F.Pipe4( - t1, - fmap(tupleConstructor4[T1, T2, T3, T4]()), - fap1(t2), - fap2(t3), - fap3(t4), -) + return F.Pipe4( + t1, + fmap(tupleConstructor4[T1, T2, T3, T4]()), + fap1(t2), + fap2(t3), + fap3(t4), + ) } // SequenceTuple4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple4] of higher higher kinded types and returns a higher kinded type of a [Tuple4] with the resolved values. func SequenceTuple4[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, - AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, - T1, - T2, - T3, - T4, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, + AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, + T1, + T2, + T3, + T4, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - t T.Tuple4[HKT_T1, HKT_T2, HKT_T3, HKT_T4], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + t T.Tuple4[HKT_T1, HKT_T2, HKT_T3, HKT_T4], ) HKT_TUPLE4 { - return F.Pipe4( - t.F1, - fmap(tupleConstructor4[T1, T2, T3, T4]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), -) + return F.Pipe4( + t.F1, + fmap(tupleConstructor4[T1, T2, T3, T4]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + ) } // TraverseTuple4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple4] of base types and 4 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple4] with the resolved values. func TraverseTuple4[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, - AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] - HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4, + AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]] + HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - t T.Tuple4[A1, A2, A3, A4], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + t T.Tuple4[A1, A2, A3, A4], ) HKT_TUPLE4 { - return F.Pipe4( - f1(t.F1), - fmap(tupleConstructor4[T1, T2, T3, T4]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), -) + return F.Pipe4( + f1(t.F1), + fmap(tupleConstructor4[T1, T2, T3, T4]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + ) } // tupleConstructor5 returns a curried version of [T.MakeTuple5] func tupleConstructor5[T1, T2, T3, T4, T5 any]() func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5] { - return F.Curry5(T.MakeTuple5[T1, T2, T3, T4, T5]) + return F.Curry5(T.MakeTuple5[T1, T2, T3, T4, T5]) } // SequenceT5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 5 higher higher kinded types and returns a higher kinded type of a [Tuple5] with the resolved values. func SequenceT5[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, - AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, - T1, - T2, - T3, - T4, - T5, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, + AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, + T1, + T2, + T3, + T4, + T5, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, ) HKT_TUPLE5 { - return F.Pipe5( - t1, - fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), -) + return F.Pipe5( + t1, + fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + ) } // SequenceTuple5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple5] of higher higher kinded types and returns a higher kinded type of a [Tuple5] with the resolved values. func SequenceTuple5[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, - AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, - T1, - T2, - T3, - T4, - T5, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, + AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, + T1, + T2, + T3, + T4, + T5, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - t T.Tuple5[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + t T.Tuple5[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5], ) HKT_TUPLE5 { - return F.Pipe5( - t.F1, - fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), -) + return F.Pipe5( + t.F1, + fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + ) } // TraverseTuple5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple5] of base types and 5 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple5] with the resolved values. func TraverseTuple5[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, - AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] - HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5, + AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]] + HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - t T.Tuple5[A1, A2, A3, A4, A5], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + t T.Tuple5[A1, A2, A3, A4, A5], ) HKT_TUPLE5 { - return F.Pipe5( - f1(t.F1), - fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), -) + return F.Pipe5( + f1(t.F1), + fmap(tupleConstructor5[T1, T2, T3, T4, T5]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + ) } // tupleConstructor6 returns a curried version of [T.MakeTuple6] func tupleConstructor6[T1, T2, T3, T4, T5, T6 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6] { - return F.Curry6(T.MakeTuple6[T1, T2, T3, T4, T5, T6]) + return F.Curry6(T.MakeTuple6[T1, T2, T3, T4, T5, T6]) } // SequenceT6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 6 higher higher kinded types and returns a higher kinded type of a [Tuple6] with the resolved values. func SequenceT6[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, - AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, - T1, - T2, - T3, - T4, - T5, - T6, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, + AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, + T1, + T2, + T3, + T4, + T5, + T6, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, - t6 HKT_T6, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, + t6 HKT_T6, ) HKT_TUPLE6 { - return F.Pipe6( - t1, - fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), - fap5(t6), -) + return F.Pipe6( + t1, + fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + fap5(t6), + ) } // SequenceTuple6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple6] of higher higher kinded types and returns a higher kinded type of a [Tuple6] with the resolved values. func SequenceTuple6[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, - AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, - T1, - T2, - T3, - T4, - T5, - T6, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, + AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, + T1, + T2, + T3, + T4, + T5, + T6, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - t T.Tuple6[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + t T.Tuple6[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6], ) HKT_TUPLE6 { - return F.Pipe6( - t.F1, - fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), - fap5(t.F6), -) + return F.Pipe6( + t.F1, + fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + fap5(t.F6), + ) } // TraverseTuple6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple6] of base types and 6 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple6] with the resolved values. func TraverseTuple6[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, - AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - F6 ~func(A6) HKT_T6, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - A6, T6, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] - HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6, + AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + F6 ~func(A6) HKT_T6, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + A6, T6, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]] + HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - f6 F6, - t T.Tuple6[A1, A2, A3, A4, A5, A6], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + f6 F6, + t T.Tuple6[A1, A2, A3, A4, A5, A6], ) HKT_TUPLE6 { - return F.Pipe6( - f1(t.F1), - fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), - fap5(f6(t.F6)), -) + return F.Pipe6( + f1(t.F1), + fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + fap5(f6(t.F6)), + ) } // tupleConstructor7 returns a curried version of [T.MakeTuple7] func tupleConstructor7[T1, T2, T3, T4, T5, T6, T7 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return F.Curry7(T.MakeTuple7[T1, T2, T3, T4, T5, T6, T7]) + return F.Curry7(T.MakeTuple7[T1, T2, T3, T4, T5, T6, T7]) } // SequenceT7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 7 higher higher kinded types and returns a higher kinded type of a [Tuple7] with the resolved values. func SequenceT7[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, - AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, + AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, - t6 HKT_T6, - t7 HKT_T7, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, + t6 HKT_T6, + t7 HKT_T7, ) HKT_TUPLE7 { - return F.Pipe7( - t1, - fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), - fap5(t6), - fap6(t7), -) + return F.Pipe7( + t1, + fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + fap5(t6), + fap6(t7), + ) } // SequenceTuple7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple7] of higher higher kinded types and returns a higher kinded type of a [Tuple7] with the resolved values. func SequenceTuple7[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, - AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, + AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - t T.Tuple7[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + t T.Tuple7[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7], ) HKT_TUPLE7 { - return F.Pipe7( - t.F1, - fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), - fap5(t.F6), - fap6(t.F7), -) + return F.Pipe7( + t.F1, + fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + fap5(t.F6), + fap6(t.F7), + ) } // TraverseTuple7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple7] of base types and 7 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple7] with the resolved values. func TraverseTuple7[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, - AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - F6 ~func(A6) HKT_T6, - F7 ~func(A7) HKT_T7, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - A6, T6, - A7, T7, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] - HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7, + AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + F6 ~func(A6) HKT_T6, + F7 ~func(A7) HKT_T7, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + A6, T6, + A7, T7, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] + HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - f6 F6, - f7 F7, - t T.Tuple7[A1, A2, A3, A4, A5, A6, A7], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + f6 F6, + f7 F7, + t T.Tuple7[A1, A2, A3, A4, A5, A6, A7], ) HKT_TUPLE7 { - return F.Pipe7( - f1(t.F1), - fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), - fap5(f6(t.F6)), - fap6(f7(t.F7)), -) + return F.Pipe7( + f1(t.F1), + fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + fap5(f6(t.F6)), + fap6(f7(t.F7)), + ) } // tupleConstructor8 returns a curried version of [T.MakeTuple8] func tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return F.Curry8(T.MakeTuple8[T1, T2, T3, T4, T5, T6, T7, T8]) + return F.Curry8(T.MakeTuple8[T1, T2, T3, T4, T5, T6, T7, T8]) } // SequenceT8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 8 higher higher kinded types and returns a higher kinded type of a [Tuple8] with the resolved values. func SequenceT8[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, - AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, + AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, - t6 HKT_T6, - t7 HKT_T7, - t8 HKT_T8, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, + t6 HKT_T6, + t7 HKT_T7, + t8 HKT_T8, ) HKT_TUPLE8 { - return F.Pipe8( - t1, - fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), - fap5(t6), - fap6(t7), - fap7(t8), -) + return F.Pipe8( + t1, + fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + fap5(t6), + fap6(t7), + fap7(t8), + ) } // SequenceTuple8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple8] of higher higher kinded types and returns a higher kinded type of a [Tuple8] with the resolved values. func SequenceTuple8[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, - AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, + AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - t T.Tuple8[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + t T.Tuple8[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8], ) HKT_TUPLE8 { - return F.Pipe8( - t.F1, - fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), - fap5(t.F6), - fap6(t.F7), - fap7(t.F8), -) + return F.Pipe8( + t.F1, + fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + fap5(t.F6), + fap6(t.F7), + fap7(t.F8), + ) } // TraverseTuple8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple8] of base types and 8 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple8] with the resolved values. func TraverseTuple8[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, - AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - F6 ~func(A6) HKT_T6, - F7 ~func(A7) HKT_T7, - F8 ~func(A8) HKT_T8, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - A6, T6, - A7, T7, - A8, T8, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] - HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8, + AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + F6 ~func(A6) HKT_T6, + F7 ~func(A7) HKT_T7, + F8 ~func(A8) HKT_T8, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + A6, T6, + A7, T7, + A8, T8, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] + HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - f6 F6, - f7 F7, - f8 F8, - t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + f6 F6, + f7 F7, + f8 F8, + t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8], ) HKT_TUPLE8 { - return F.Pipe8( - f1(t.F1), - fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), - fap5(f6(t.F6)), - fap6(f7(t.F7)), - fap7(f8(t.F8)), -) + return F.Pipe8( + f1(t.F1), + fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + fap5(f6(t.F6)), + fap6(f7(t.F7)), + fap7(f8(t.F8)), + ) } // tupleConstructor9 returns a curried version of [T.MakeTuple9] func tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return F.Curry9(T.MakeTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) + return F.Curry9(T.MakeTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) } // SequenceT9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 9 higher higher kinded types and returns a higher kinded type of a [Tuple9] with the resolved values. func SequenceT9[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, - AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, + AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, - t6 HKT_T6, - t7 HKT_T7, - t8 HKT_T8, - t9 HKT_T9, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, + t6 HKT_T6, + t7 HKT_T7, + t8 HKT_T8, + t9 HKT_T9, ) HKT_TUPLE9 { - return F.Pipe9( - t1, - fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), - fap5(t6), - fap6(t7), - fap7(t8), - fap8(t9), -) + return F.Pipe9( + t1, + fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + fap5(t6), + fap6(t7), + fap7(t8), + fap8(t9), + ) } // SequenceTuple9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple9] of higher higher kinded types and returns a higher kinded type of a [Tuple9] with the resolved values. func SequenceTuple9[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, - AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, + AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - t T.Tuple9[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + t T.Tuple9[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9], ) HKT_TUPLE9 { - return F.Pipe9( - t.F1, - fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), - fap5(t.F6), - fap6(t.F7), - fap7(t.F8), - fap8(t.F9), -) + return F.Pipe9( + t.F1, + fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + fap5(t.F6), + fap6(t.F7), + fap7(t.F8), + fap8(t.F9), + ) } // TraverseTuple9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple9] of base types and 9 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple9] with the resolved values. func TraverseTuple9[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, - AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - F6 ~func(A6) HKT_T6, - F7 ~func(A7) HKT_T7, - F8 ~func(A8) HKT_T8, - F9 ~func(A9) HKT_T9, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - A6, T6, - A7, T7, - A8, T8, - A9, T9, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] - HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9, + AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + F6 ~func(A6) HKT_T6, + F7 ~func(A7) HKT_T7, + F8 ~func(A8) HKT_T8, + F9 ~func(A9) HKT_T9, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + A6, T6, + A7, T7, + A8, T8, + A9, T9, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] + HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - f6 F6, - f7 F7, - f8 F8, - f9 F9, - t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + f6 F6, + f7 F7, + f8 F8, + f9 F9, + t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9], ) HKT_TUPLE9 { - return F.Pipe9( - f1(t.F1), - fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), - fap5(f6(t.F6)), - fap6(f7(t.F7)), - fap7(f8(t.F8)), - fap8(f9(t.F9)), -) + return F.Pipe9( + f1(t.F1), + fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + fap5(f6(t.F6)), + fap6(f7(t.F7)), + fap7(f8(t.F8)), + fap8(f9(t.F9)), + ) } // tupleConstructor10 returns a curried version of [T.MakeTuple10] func tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return F.Curry10(T.MakeTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) + return F.Curry10(T.MakeTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) } // SequenceT10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes 10 higher higher kinded types and returns a higher kinded type of a [Tuple10] with the resolved values. func SequenceT10[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, - AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, - AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_T10, // HKT[T10] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, + AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, + AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_T10, // HKT[T10] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - fap9 AP9, - t1 HKT_T1, - t2 HKT_T2, - t3 HKT_T3, - t4 HKT_T4, - t5 HKT_T5, - t6 HKT_T6, - t7 HKT_T7, - t8 HKT_T8, - t9 HKT_T9, - t10 HKT_T10, + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + fap9 AP9, + t1 HKT_T1, + t2 HKT_T2, + t3 HKT_T3, + t4 HKT_T4, + t5 HKT_T5, + t6 HKT_T6, + t7 HKT_T7, + t8 HKT_T8, + t9 HKT_T9, + t10 HKT_T10, ) HKT_TUPLE10 { - return F.Pipe10( - t1, - fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), - fap1(t2), - fap2(t3), - fap3(t4), - fap4(t5), - fap5(t6), - fap6(t7), - fap7(t8), - fap8(t9), - fap9(t10), -) + return F.Pipe10( + t1, + fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), + fap1(t2), + fap2(t3), + fap3(t4), + fap4(t5), + fap5(t6), + fap6(t7), + fap7(t8), + fap8(t9), + fap9(t10), + ) } // SequenceTuple10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple10] of higher higher kinded types and returns a higher kinded type of a [Tuple10] with the resolved values. func SequenceTuple10[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, - AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, - AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_T10, // HKT[T10] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, + AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, + AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_T10, // HKT[T10] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - fap9 AP9, - t T.Tuple10[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9, HKT_T10], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + fap9 AP9, + t T.Tuple10[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9, HKT_T10], ) HKT_TUPLE10 { - return F.Pipe10( - t.F1, - fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), - fap1(t.F2), - fap2(t.F3), - fap3(t.F4), - fap4(t.F5), - fap5(t.F6), - fap6(t.F7), - fap7(t.F8), - fap8(t.F9), - fap9(t.F10), -) + return F.Pipe10( + t.F1, + fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), + fap1(t.F2), + fap2(t.F3), + fap3(t.F4), + fap4(t.F5), + fap5(t.F6), + fap6(t.F7), + fap7(t.F8), + fap8(t.F9), + fap9(t.F10), + ) } // TraverseTuple10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap. // The function takes a [Tuple10] of base types and 10 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple10] with the resolved values. func TraverseTuple10[ - MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, - AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, - AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, - AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, - AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, - AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, - AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, - AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, - AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, - AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, - F1 ~func(A1) HKT_T1, - F2 ~func(A2) HKT_T2, - F3 ~func(A3) HKT_T3, - F4 ~func(A4) HKT_T4, - F5 ~func(A5) HKT_T5, - F6 ~func(A6) HKT_T6, - F7 ~func(A7) HKT_T7, - F8 ~func(A8) HKT_T8, - F9 ~func(A9) HKT_T9, - F10 ~func(A10) HKT_T10, - A1, T1, - A2, T2, - A3, T3, - A4, T4, - A5, T5, - A6, T6, - A7, T7, - A8, T8, - A9, T9, - A10, T10, - HKT_T1, // HKT[T1] - HKT_T2, // HKT[T2] - HKT_T3, // HKT[T3] - HKT_T4, // HKT[T4] - HKT_T5, // HKT[T5] - HKT_T6, // HKT[T6] - HKT_T7, // HKT[T7] - HKT_T8, // HKT[T8] - HKT_T9, // HKT[T9] - HKT_T10, // HKT[T10] - HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] - HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, + AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, + AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10, + AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10, + AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10, + AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10, + AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10, + AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10, + AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10, + AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10, + F1 ~func(A1) HKT_T1, + F2 ~func(A2) HKT_T2, + F3 ~func(A3) HKT_T3, + F4 ~func(A4) HKT_T4, + F5 ~func(A5) HKT_T5, + F6 ~func(A6) HKT_T6, + F7 ~func(A7) HKT_T7, + F8 ~func(A8) HKT_T8, + F9 ~func(A9) HKT_T9, + F10 ~func(A10) HKT_T10, + A1, T1, + A2, T2, + A3, T3, + A4, T4, + A5, T5, + A6, T6, + A7, T7, + A8, T8, + A9, T9, + A10, T10, + HKT_T1, // HKT[T1] + HKT_T2, // HKT[T2] + HKT_T3, // HKT[T3] + HKT_T4, // HKT[T4] + HKT_T5, // HKT[T5] + HKT_T6, // HKT[T6] + HKT_T7, // HKT[T7] + HKT_T8, // HKT[T8] + HKT_T9, // HKT[T9] + HKT_T10, // HKT[T10] + HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] + HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] ]( - fmap MAP, - fap1 AP1, - fap2 AP2, - fap3 AP3, - fap4 AP4, - fap5 AP5, - fap6 AP6, - fap7 AP7, - fap8 AP8, - fap9 AP9, - f1 F1, - f2 F2, - f3 F3, - f4 F4, - f5 F5, - f6 F6, - f7 F7, - f8 F8, - f9 F9, - f10 F10, - t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10], + fmap MAP, + fap1 AP1, + fap2 AP2, + fap3 AP3, + fap4 AP4, + fap5 AP5, + fap6 AP6, + fap7 AP7, + fap8 AP8, + fap9 AP9, + f1 F1, + f2 F2, + f3 F3, + f4 F4, + f5 F5, + f6 F6, + f7 F7, + f8 F8, + f9 F9, + f10 F10, + t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10], ) HKT_TUPLE10 { - return F.Pipe10( - f1(t.F1), - fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), - fap1(f2(t.F2)), - fap2(f3(t.F3)), - fap3(f4(t.F4)), - fap4(f5(t.F5)), - fap5(f6(t.F6)), - fap6(f7(t.F7)), - fap7(f8(t.F8)), - fap8(f9(t.F9)), - fap9(f10(t.F10)), -) + return F.Pipe10( + f1(t.F1), + fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()), + fap1(f2(t.F2)), + fap2(f3(t.F3)), + fap3(f4(t.F4)), + fap4(f5(t.F5)), + fap5(f6(t.F6)), + fap6(f7(t.F7)), + fap7(f8(t.F8)), + fap8(f9(t.F9)), + fap9(f10(t.F10)), + ) } diff --git a/internal/eithert/either.go b/internal/eithert/either.go index 1c101f1..dc64870 100644 --- a/internal/eithert/either.go +++ b/internal/eithert/either.go @@ -22,6 +22,16 @@ import ( FC "github.com/IBM/fp-go/internal/functor" ) +func MonadAlt[LAZY ~func() HKTFA, E, A, HKTFA any]( + fof func(ET.Either[E, A]) HKTFA, + fchain func(HKTFA, func(ET.Either[E, A]) HKTFA) HKTFA, + + first HKTFA, + second LAZY) HKTFA { + + return fchain(first, ET.Fold(F.Ignore1of1[E](second), F.Flow2(ET.Of[E, A], fof))) +} + // HKTFA = HKT> // HKTFB = HKT> func MonadMap[E, A, B, HKTFA, HKTFB any](fmap func(HKTFA, func(ET.Either[E, A]) ET.Either[E, B]) HKTFB, fa HKTFA, f func(A) B) HKTFB { diff --git a/io/gen.go b/io/gen.go index 0e7c2d2..e8385a9 100644 --- a/io/gen.go +++ b/io/gen.go @@ -4,373 +4,372 @@ package io - import ( - G "github.com/IBM/fp-go/io/generic" + G "github.com/IBM/fp-go/io/generic" T "github.com/IBM/fp-go/tuple" ) // SequenceT1 converts 1 [IO[T]] into a [IO[T.Tuple1[T1]]] func SequenceT1[T1 any]( - t1 IO[T1], + t1 IO[T1], ) IO[T.Tuple1[T1]] { - return G.SequenceT1[ - IO[T.Tuple1[T1]], - IO[T1], - ](t1) + return G.SequenceT1[ + IO[T.Tuple1[T1]], + IO[T1], + ](t1) } // SequenceTuple1 converts a [T.Tuple1[IO[T]]] into a [IO[T.Tuple1[T1]]] func SequenceTuple1[T1 any](t T.Tuple1[IO[T1]]) IO[T.Tuple1[T1]] { - return G.SequenceTuple1[ - IO[T.Tuple1[T1]], - IO[T1], - ](t) + return G.SequenceTuple1[ + IO[T.Tuple1[T1]], + IO[T1], + ](t) } // TraverseTuple1 converts a [T.Tuple1[IO[T]]] into a [IO[T.Tuple1[T1]]] func TraverseTuple1[F1 ~func(A1) IO[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) IO[T.Tuple1[T1]] { - return G.TraverseTuple1[IO[T.Tuple1[T1]]](f1) + return G.TraverseTuple1[IO[T.Tuple1[T1]]](f1) } // SequenceT2 converts 2 [IO[T]] into a [IO[T.Tuple2[T1, T2]]] func SequenceT2[T1, T2 any]( - t1 IO[T1], - t2 IO[T2], + t1 IO[T1], + t2 IO[T2], ) IO[T.Tuple2[T1, T2]] { - return G.SequenceT2[ - IO[T.Tuple2[T1, T2]], - IO[T1], - IO[T2], - ](t1, t2) + return G.SequenceT2[ + IO[T.Tuple2[T1, T2]], + IO[T1], + IO[T2], + ](t1, t2) } // SequenceTuple2 converts a [T.Tuple2[IO[T]]] into a [IO[T.Tuple2[T1, T2]]] func SequenceTuple2[T1, T2 any](t T.Tuple2[IO[T1], IO[T2]]) IO[T.Tuple2[T1, T2]] { - return G.SequenceTuple2[ - IO[T.Tuple2[T1, T2]], - IO[T1], - IO[T2], - ](t) + return G.SequenceTuple2[ + IO[T.Tuple2[T1, T2]], + IO[T1], + IO[T2], + ](t) } // TraverseTuple2 converts a [T.Tuple2[IO[T]]] into a [IO[T.Tuple2[T1, T2]]] func TraverseTuple2[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) IO[T.Tuple2[T1, T2]] { - return G.TraverseTuple2[IO[T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseTuple2[IO[T.Tuple2[T1, T2]]](f1, f2) } // SequenceT3 converts 3 [IO[T]] into a [IO[T.Tuple3[T1, T2, T3]]] func SequenceT3[T1, T2, T3 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], ) IO[T.Tuple3[T1, T2, T3]] { - return G.SequenceT3[ - IO[T.Tuple3[T1, T2, T3]], - IO[T1], - IO[T2], - IO[T3], - ](t1, t2, t3) + return G.SequenceT3[ + IO[T.Tuple3[T1, T2, T3]], + IO[T1], + IO[T2], + IO[T3], + ](t1, t2, t3) } // SequenceTuple3 converts a [T.Tuple3[IO[T]]] into a [IO[T.Tuple3[T1, T2, T3]]] func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[IO[T1], IO[T2], IO[T3]]) IO[T.Tuple3[T1, T2, T3]] { - return G.SequenceTuple3[ - IO[T.Tuple3[T1, T2, T3]], - IO[T1], - IO[T2], - IO[T3], - ](t) + return G.SequenceTuple3[ + IO[T.Tuple3[T1, T2, T3]], + IO[T1], + IO[T2], + IO[T3], + ](t) } // TraverseTuple3 converts a [T.Tuple3[IO[T]]] into a [IO[T.Tuple3[T1, T2, T3]]] func TraverseTuple3[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) IO[T.Tuple3[T1, T2, T3]] { - return G.TraverseTuple3[IO[T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseTuple3[IO[T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // SequenceT4 converts 4 [IO[T]] into a [IO[T.Tuple4[T1, T2, T3, T4]]] func SequenceT4[T1, T2, T3, T4 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], ) IO[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceT4[ - IO[T.Tuple4[T1, T2, T3, T4]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - ](t1, t2, t3, t4) + return G.SequenceT4[ + IO[T.Tuple4[T1, T2, T3, T4]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + ](t1, t2, t3, t4) } // SequenceTuple4 converts a [T.Tuple4[IO[T]]] into a [IO[T.Tuple4[T1, T2, T3, T4]]] func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[IO[T1], IO[T2], IO[T3], IO[T4]]) IO[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceTuple4[ - IO[T.Tuple4[T1, T2, T3, T4]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - ](t) + return G.SequenceTuple4[ + IO[T.Tuple4[T1, T2, T3, T4]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + ](t) } // TraverseTuple4 converts a [T.Tuple4[IO[T]]] into a [IO[T.Tuple4[T1, T2, T3, T4]]] func TraverseTuple4[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) IO[T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseTuple4[IO[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseTuple4[IO[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // SequenceT5 converts 5 [IO[T]] into a [IO[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceT5[T1, T2, T3, T4, T5 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], ) IO[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceT5[ - IO[T.Tuple5[T1, T2, T3, T4, T5]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - ](t1, t2, t3, t4, t5) + return G.SequenceT5[ + IO[T.Tuple5[T1, T2, T3, T4, T5]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + ](t1, t2, t3, t4, t5) } // SequenceTuple5 converts a [T.Tuple5[IO[T]]] into a [IO[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5]]) IO[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceTuple5[ - IO[T.Tuple5[T1, T2, T3, T4, T5]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - ](t) + return G.SequenceTuple5[ + IO[T.Tuple5[T1, T2, T3, T4, T5]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + ](t) } // TraverseTuple5 converts a [T.Tuple5[IO[T]]] into a [IO[T.Tuple5[T1, T2, T3, T4, T5]]] func TraverseTuple5[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) IO[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseTuple5[IO[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseTuple5[IO[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // SequenceT6 converts 6 [IO[T]] into a [IO[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceT6[T1, T2, T3, T4, T5, T6 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], - t6 IO[T6], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], + t6 IO[T6], ) IO[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceT6[ - IO[T.Tuple6[T1, T2, T3, T4, T5, T6]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - ](t1, t2, t3, t4, t5, t6) + return G.SequenceT6[ + IO[T.Tuple6[T1, T2, T3, T4, T5, T6]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + ](t1, t2, t3, t4, t5, t6) } // SequenceTuple6 converts a [T.Tuple6[IO[T]]] into a [IO[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6]]) IO[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceTuple6[ - IO[T.Tuple6[T1, T2, T3, T4, T5, T6]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - ](t) + return G.SequenceTuple6[ + IO[T.Tuple6[T1, T2, T3, T4, T5, T6]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + ](t) } // TraverseTuple6 converts a [T.Tuple6[IO[T]]] into a [IO[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func TraverseTuple6[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) IO[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseTuple6[IO[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseTuple6[IO[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // SequenceT7 converts 7 [IO[T]] into a [IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], - t6 IO[T6], - t7 IO[T7], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], + t6 IO[T6], + t7 IO[T7], ) IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceT7[ - IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - ](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceT7[ + IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + ](t1, t2, t3, t4, t5, t6, t7) } // SequenceTuple7 converts a [T.Tuple7[IO[T]]] into a [IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7]]) IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceTuple7[ - IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - ](t) + return G.SequenceTuple7[ + IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + ](t) } // TraverseTuple7 converts a [T.Tuple7[IO[T]]] into a [IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func TraverseTuple7[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseTuple7[IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseTuple7[IO[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // SequenceT8 converts 8 [IO[T]] into a [IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], - t6 IO[T6], - t7 IO[T7], - t8 IO[T8], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], + t6 IO[T6], + t7 IO[T7], + t8 IO[T8], ) IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceT8[ - IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - ](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceT8[ + IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + ](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceTuple8 converts a [T.Tuple8[IO[T]]] into a [IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8]]) IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceTuple8[ - IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - ](t) + return G.SequenceTuple8[ + IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + ](t) } // TraverseTuple8 converts a [T.Tuple8[IO[T]]] into a [IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func TraverseTuple8[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseTuple8[IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseTuple8[IO[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // SequenceT9 converts 9 [IO[T]] into a [IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], - t6 IO[T6], - t7 IO[T7], - t8 IO[T8], - t9 IO[T9], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], + t6 IO[T6], + t7 IO[T7], + t8 IO[T8], + t9 IO[T9], ) IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceT9[ - IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - IO[T9], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceT9[ + IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + IO[T9], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceTuple9 converts a [T.Tuple9[IO[T]]] into a [IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8], IO[T9]]) IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceTuple9[ - IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - IO[T9], - ](t) + return G.SequenceTuple9[ + IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + IO[T9], + ](t) } // TraverseTuple9 converts a [T.Tuple9[IO[T]]] into a [IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func TraverseTuple9[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], F9 ~func(A9) IO[T9], A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseTuple9[IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseTuple9[IO[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // SequenceT10 converts 10 [IO[T]] into a [IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 IO[T1], - t2 IO[T2], - t3 IO[T3], - t4 IO[T4], - t5 IO[T5], - t6 IO[T6], - t7 IO[T7], - t8 IO[T8], - t9 IO[T9], - t10 IO[T10], + t1 IO[T1], + t2 IO[T2], + t3 IO[T3], + t4 IO[T4], + t5 IO[T5], + t6 IO[T6], + t7 IO[T7], + t8 IO[T8], + t9 IO[T9], + t10 IO[T10], ) IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceT10[ - IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - IO[T9], - IO[T10], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceT10[ + IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + IO[T9], + IO[T10], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceTuple10 converts a [T.Tuple10[IO[T]]] into a [IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8], IO[T9], IO[T10]]) IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceTuple10[ - IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IO[T1], - IO[T2], - IO[T3], - IO[T4], - IO[T5], - IO[T6], - IO[T7], - IO[T8], - IO[T9], - IO[T10], - ](t) + return G.SequenceTuple10[ + IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IO[T1], + IO[T2], + IO[T3], + IO[T4], + IO[T5], + IO[T6], + IO[T7], + IO[T8], + IO[T9], + IO[T10], + ](t) } // TraverseTuple10 converts a [T.Tuple10[IO[T]]] into a [IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func TraverseTuple10[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], F9 ~func(A9) IO[T9], F10 ~func(A10) IO[T10], A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseTuple10[IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseTuple10[IO[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } diff --git a/io/generic/gen.go b/io/generic/gen.go index ac98727..1ab6b47 100644 --- a/io/generic/gen.go +++ b/io/generic/gen.go @@ -3,828 +3,827 @@ // 2023-09-12 13:44:27.9813739 +0200 CEST m=+0.011088001 package generic - import ( - T "github.com/IBM/fp-go/tuple" A "github.com/IBM/fp-go/internal/apply" + T "github.com/IBM/fp-go/tuple" ) // SequenceT1 converts 1 [func() T] into a [func() T.Tuple1[T1]] func SequenceT1[ - G_TUPLE1 ~func() T.Tuple1[T1], - G_T1 ~func() T1, - T1 any]( - t1 G_T1, -) G_TUPLE1 { - return A.SequenceT1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - t1, - ) + G_TUPLE1 ~func() T.Tuple1[T1], + G_T1 ~func() T1, + T1 any]( + t1 G_T1, +) G_TUPLE1 { + return A.SequenceT1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [T.Tuple1[func() T]] into a [func() T.Tuple1[T1]] func SequenceTuple1[ - G_TUPLE1 ~func() T.Tuple1[T1], - G_T1 ~func() T1, - T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { - return A.SequenceTuple1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - t) + G_TUPLE1 ~func() T.Tuple1[T1], + G_T1 ~func() T1, + T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { + return A.SequenceTuple1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + t) } // TraverseTuple1 converts a [T.Tuple1[func() T]] into a [func() T.Tuple1[T1]] func TraverseTuple1[ - G_TUPLE1 ~func() T.Tuple1[T1], - F1 ~func(A1) G_T1, - G_T1 ~func() T1, - A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { - return func(t T.Tuple1[A1]) G_TUPLE1 { - return A.TraverseTuple1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - f1, - t) - } + G_TUPLE1 ~func() T.Tuple1[T1], + F1 ~func(A1) G_T1, + G_T1 ~func() T1, + A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { + return func(t T.Tuple1[A1]) G_TUPLE1 { + return A.TraverseTuple1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + f1, + t) + } } // SequenceT2 converts 2 [func() T] into a [func() T.Tuple2[T1, T2]] func SequenceT2[ - G_TUPLE2 ~func() T.Tuple2[T1, T2], - G_T1 ~func() T1, - G_T2 ~func() T2, - T1, T2 any]( - t1 G_T1, - t2 G_T2, -) G_TUPLE2 { - return A.SequenceT2( - Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], - t1, - t2, - ) + G_TUPLE2 ~func() T.Tuple2[T1, T2], + G_T1 ~func() T1, + G_T2 ~func() T2, + T1, T2 any]( + t1 G_T1, + t2 G_T2, +) G_TUPLE2 { + return A.SequenceT2( + Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], + t1, + t2, + ) } // SequenceTuple2 converts a [T.Tuple2[func() T]] into a [func() T.Tuple2[T1, T2]] func SequenceTuple2[ - G_TUPLE2 ~func() T.Tuple2[T1, T2], - G_T1 ~func() T1, - G_T2 ~func() T2, - T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { - return A.SequenceTuple2( - Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], - t) + G_TUPLE2 ~func() T.Tuple2[T1, T2], + G_T1 ~func() T1, + G_T2 ~func() T2, + T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { + return A.SequenceTuple2( + Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], + t) } // TraverseTuple2 converts a [T.Tuple2[func() T]] into a [func() T.Tuple2[T1, T2]] func TraverseTuple2[ - G_TUPLE2 ~func() T.Tuple2[T1, T2], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - G_T1 ~func() T1, - G_T2 ~func() T2, - A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { - return func(t T.Tuple2[A1, A2]) G_TUPLE2 { - return A.TraverseTuple2( - Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], - f1, - f2, - t) - } + G_TUPLE2 ~func() T.Tuple2[T1, T2], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + G_T1 ~func() T1, + G_T2 ~func() T2, + A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { + return func(t T.Tuple2[A1, A2]) G_TUPLE2 { + return A.TraverseTuple2( + Map[G_T1, func() func(T2) T.Tuple2[T1, T2], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() func(T2) T.Tuple2[T1, T2], G_T2], + f1, + f2, + t) + } } // SequenceT3 converts 3 [func() T] into a [func() T.Tuple3[T1, T2, T3]] func SequenceT3[ - G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - T1, T2, T3 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, -) G_TUPLE3 { - return A.SequenceT3( - Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], - Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], - t1, - t2, - t3, - ) + G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + T1, T2, T3 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, +) G_TUPLE3 { + return A.SequenceT3( + Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], + Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [T.Tuple3[func() T]] into a [func() T.Tuple3[T1, T2, T3]] func SequenceTuple3[ - G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { - return A.SequenceTuple3( - Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], - Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], - t) + G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { + return A.SequenceTuple3( + Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], + Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], + t) } // TraverseTuple3 converts a [T.Tuple3[func() T]] into a [func() T.Tuple3[T1, T2, T3]] func TraverseTuple3[ - G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return A.TraverseTuple3( - Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], - Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], - f1, - f2, - f3, - t) - } + G_TUPLE3 ~func() T.Tuple3[T1, T2, T3], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return A.TraverseTuple3( + Map[G_T1, func() func(T2) func(T3) T.Tuple3[T1, T2, T3], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() func(T3) T.Tuple3[T1, T2, T3], func() func(T2) func(T3) T.Tuple3[T1, T2, T3], G_T2], + Ap[G_TUPLE3, func() func(T3) T.Tuple3[T1, T2, T3], G_T3], + f1, + f2, + f3, + t) + } } // SequenceT4 converts 4 [func() T] into a [func() T.Tuple4[T1, T2, T3, T4]] func SequenceT4[ - G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - T1, T2, T3, T4 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, -) G_TUPLE4 { - return A.SequenceT4( - Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], - Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], - Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], - t1, - t2, - t3, - t4, - ) + G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + T1, T2, T3, T4 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, +) G_TUPLE4 { + return A.SequenceT4( + Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], + Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], + Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [T.Tuple4[func() T]] into a [func() T.Tuple4[T1, T2, T3, T4]] func SequenceTuple4[ - G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { - return A.SequenceTuple4( - Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], - Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], - Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], - t) + G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { + return A.SequenceTuple4( + Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], + Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], + Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], + t) } // TraverseTuple4 converts a [T.Tuple4[func() T]] into a [func() T.Tuple4[T1, T2, T3, T4]] func TraverseTuple4[ - G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return A.TraverseTuple4( - Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], - Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], - Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], - f1, - f2, - f3, - f4, - t) - } + G_TUPLE4 ~func() T.Tuple4[T1, T2, T3, T4], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return A.TraverseTuple4( + Map[G_T1, func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T2], + Ap[func() func(T4) T.Tuple4[T1, T2, T3, T4], func() func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], G_T3], + Ap[G_TUPLE4, func() func(T4) T.Tuple4[T1, T2, T3, T4], G_T4], + f1, + f2, + f3, + f4, + t) + } } // SequenceT5 converts 5 [func() T] into a [func() T.Tuple5[T1, T2, T3, T4, T5]] func SequenceT5[ - G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - T1, T2, T3, T4, T5 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, -) G_TUPLE5 { - return A.SequenceT5( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], - Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], - Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], - Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], - t1, - t2, - t3, - t4, - t5, - ) + G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + T1, T2, T3, T4, T5 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, +) G_TUPLE5 { + return A.SequenceT5( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], + Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], + Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], + Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [T.Tuple5[func() T]] into a [func() T.Tuple5[T1, T2, T3, T4, T5]] func SequenceTuple5[ - G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { - return A.SequenceTuple5( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], - Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], - Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], - Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], - t) + G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { + return A.SequenceTuple5( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], + Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], + Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], + Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], + t) } // TraverseTuple5 converts a [T.Tuple5[func() T]] into a [func() T.Tuple5[T1, T2, T3, T4, T5]] func TraverseTuple5[ - G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return A.TraverseTuple5( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], - Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], - Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], - Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], - f1, - f2, - f3, - f4, - f5, - t) - } + G_TUPLE5 ~func() T.Tuple5[T1, T2, T3, T4, T5], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return A.TraverseTuple5( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T2], + Ap[func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T3], + Ap[func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], func() func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T4], + Ap[G_TUPLE5, func() func(T5) T.Tuple5[T1, T2, T3, T4, T5], G_T5], + f1, + f2, + f3, + f4, + f5, + t) + } } // SequenceT6 converts 6 [func() T] into a [func() T.Tuple6[T1, T2, T3, T4, T5, T6]] func SequenceT6[ - G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - T1, T2, T3, T4, T5, T6 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, -) G_TUPLE6 { - return A.SequenceT6( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], - Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], - Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], - Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], - Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + T1, T2, T3, T4, T5, T6 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, +) G_TUPLE6 { + return A.SequenceT6( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], + Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], + Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], + Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], + Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [T.Tuple6[func() T]] into a [func() T.Tuple6[T1, T2, T3, T4, T5, T6]] func SequenceTuple6[ - G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { - return A.SequenceTuple6( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], - Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], - Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], - Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], - Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], - t) + G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { + return A.SequenceTuple6( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], + Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], + Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], + Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], + Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], + t) } // TraverseTuple6 converts a [T.Tuple6[func() T]] into a [func() T.Tuple6[T1, T2, T3, T4, T5, T6]] func TraverseTuple6[ - G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return A.TraverseTuple6( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], - Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], - Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], - Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], - Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t) - } + G_TUPLE6 ~func() T.Tuple6[T1, T2, T3, T4, T5, T6], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return A.TraverseTuple6( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T2], + Ap[func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T3], + Ap[func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T4], + Ap[func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], func() func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T5], + Ap[G_TUPLE6, func() func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], G_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t) + } } // SequenceT7 converts 7 [func() T] into a [func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] func SequenceT7[ - G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - T1, T2, T3, T4, T5, T6, T7 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, -) G_TUPLE7 { - return A.SequenceT7( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], - Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], - Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], - Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], - Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + T1, T2, T3, T4, T5, T6, T7 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, +) G_TUPLE7 { + return A.SequenceT7( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], + Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], + Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], + Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], + Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [T.Tuple7[func() T]] into a [func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] func SequenceTuple7[ - G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { - return A.SequenceTuple7( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], - Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], - Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], - Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], - Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], - t) + G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { + return A.SequenceTuple7( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], + Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], + Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], + Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], + Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], + t) } // TraverseTuple7 converts a [T.Tuple7[func() T]] into a [func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] func TraverseTuple7[ - G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return A.TraverseTuple7( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], - Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], - Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], - Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], - Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t) - } + G_TUPLE7 ~func() T.Tuple7[T1, T2, T3, T4, T5, T6, T7], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return A.TraverseTuple7( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T3], + Ap[func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T4], + Ap[func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T5], + Ap[func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], func() func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T6], + Ap[G_TUPLE7, func() func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], G_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t) + } } // SequenceT8 converts 8 [func() T] into a [func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] func SequenceT8[ - G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, -) G_TUPLE8 { - return A.SequenceT8( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], - Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], - Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], - Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], - Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + T1, T2, T3, T4, T5, T6, T7, T8 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, +) G_TUPLE8 { + return A.SequenceT8( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], + Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], + Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], + Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], + Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [T.Tuple8[func() T]] into a [func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] func SequenceTuple8[ - G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { - return A.SequenceTuple8( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], - Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], - Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], - Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], - Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], - t) + G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { + return A.SequenceTuple8( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], + Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], + Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], + Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], + Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], + t) } // TraverseTuple8 converts a [T.Tuple8[func() T]] into a [func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] func TraverseTuple8[ - G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return A.TraverseTuple8( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], - Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], - Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], - Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], - Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t) - } + G_TUPLE8 ~func() T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return A.TraverseTuple8( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T4], + Ap[func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T5], + Ap[func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T6], + Ap[func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], func() func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T7], + Ap[G_TUPLE8, func() func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], G_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t) + } } // SequenceT9 converts 9 [func() T] into a [func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] func SequenceT9[ - G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, -) G_TUPLE9 { - return A.SequenceT9( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], - Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], - Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], - Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], - Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, +) G_TUPLE9 { + return A.SequenceT9( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], + Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], + Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], + Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], + Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [T.Tuple9[func() T]] into a [func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] func SequenceTuple9[ - G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { - return A.SequenceTuple9( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], - Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], - Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], - Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], - Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], - t) + G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { + return A.SequenceTuple9( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], + Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], + Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], + Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], + Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], + t) } // TraverseTuple9 converts a [T.Tuple9[func() T]] into a [func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] func TraverseTuple9[ - G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return A.TraverseTuple9( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], - Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], - Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], - Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], - Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t) - } + G_TUPLE9 ~func() T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return A.TraverseTuple9( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T5], + Ap[func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T6], + Ap[func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T7], + Ap[func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], func() func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T8], + Ap[G_TUPLE9, func() func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], G_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t) + } } // SequenceT10 converts 10 [func() T] into a [func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] func SequenceT10[ - G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - G_T10 ~func() T10, - T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, - t10 G_T10, -) G_TUPLE10 { - return A.SequenceT10( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], - Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], - Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], - Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], - Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], - Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + G_T10 ~func() T10, + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, + t10 G_T10, +) G_TUPLE10 { + return A.SequenceT10( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], + Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], + Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], + Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], + Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], + Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [T.Tuple10[func() T]] into a [func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] func SequenceTuple10[ - G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - G_T10 ~func() T10, - T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { - return A.SequenceTuple10( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], - Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], - Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], - Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], - Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], - Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], - t) + G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + G_T10 ~func() T10, + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { + return A.SequenceTuple10( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], + Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], + Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], + Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], + Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], + Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], + t) } // TraverseTuple10 converts a [T.Tuple10[func() T]] into a [func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] func TraverseTuple10[ - G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - F10 ~func(A10) G_T10, - G_T1 ~func() T1, - G_T2 ~func() T2, - G_T3 ~func() T3, - G_T4 ~func() T4, - G_T5 ~func() T5, - G_T6 ~func() T6, - G_T7 ~func() T7, - G_T8 ~func() T8, - G_T9 ~func() T9, - G_T10 ~func() T10, - A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return A.TraverseTuple10( - Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], - Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], - Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], - Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], - Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], - Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], - Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], - Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], - Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t) - } + G_TUPLE10 ~func() T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + F10 ~func(A10) G_T10, + G_T1 ~func() T1, + G_T2 ~func() T2, + G_T3 ~func() T3, + G_T4 ~func() T4, + G_T5 ~func() T5, + G_T6 ~func() T6, + G_T7 ~func() T7, + G_T8 ~func() T8, + G_T9 ~func() T9, + G_T10 ~func() T10, + A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return A.TraverseTuple10( + Map[G_T1, func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T2], + Ap[func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T3], + Ap[func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T4], + Ap[func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T5], + Ap[func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T6], + Ap[func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T7], + Ap[func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T8], + Ap[func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], func() func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T9], + Ap[G_TUPLE10, func() func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], G_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t) + } } diff --git a/ioeither/gen.go b/ioeither/gen.go index 6f88d96..65b76d0 100644 --- a/ioeither/gen.go +++ b/ioeither/gen.go @@ -4,483 +4,482 @@ package ioeither - import ( - G "github.com/IBM/fp-go/ioeither/generic" + G "github.com/IBM/fp-go/ioeither/generic" T "github.com/IBM/fp-go/tuple" ) // Eitherize0 converts a function with 1 parameters returning a tuple into a function with 0 parameters returning a [IOEither[error, R]] func Eitherize0[F ~func() (R, error), R any](f F) func() IOEither[error, R] { - return G.Eitherize0[IOEither[error, R]](f) + return G.Eitherize0[IOEither[error, R]](f) } // Uneitherize0 converts a function with 1 parameters returning a tuple into a function with 0 parameters returning a [IOEither[error, R]] func Uneitherize0[F ~func() IOEither[error, R], R any](f F) func() (R, error) { - return G.Uneitherize0[IOEither[error, R]](f) + return G.Uneitherize0[IOEither[error, R]](f) } // Eitherize1 converts a function with 2 parameters returning a tuple into a function with 1 parameters returning a [IOEither[error, R]] func Eitherize1[F ~func(T1) (R, error), T1, R any](f F) func(T1) IOEither[error, R] { - return G.Eitherize1[IOEither[error, R]](f) + return G.Eitherize1[IOEither[error, R]](f) } // Uneitherize1 converts a function with 2 parameters returning a tuple into a function with 1 parameters returning a [IOEither[error, R]] func Uneitherize1[F ~func(T1) IOEither[error, R], T1, R any](f F) func(T1) (R, error) { - return G.Uneitherize1[IOEither[error, R]](f) + return G.Uneitherize1[IOEither[error, R]](f) } // SequenceT1 converts 1 [IOEither[E, T]] into a [IOEither[E, T.Tuple1[T1]]] func SequenceT1[E, T1 any]( - t1 IOEither[E, T1], + t1 IOEither[E, T1], ) IOEither[E, T.Tuple1[T1]] { - return G.SequenceT1[ - IOEither[E, T.Tuple1[T1]], - IOEither[E, T1], - ](t1) + return G.SequenceT1[ + IOEither[E, T.Tuple1[T1]], + IOEither[E, T1], + ](t1) } // SequenceTuple1 converts a [T.Tuple1[IOEither[E, T]]] into a [IOEither[E, T.Tuple1[T1]]] func SequenceTuple1[E, T1 any](t T.Tuple1[IOEither[E, T1]]) IOEither[E, T.Tuple1[T1]] { - return G.SequenceTuple1[ - IOEither[E, T.Tuple1[T1]], - IOEither[E, T1], - ](t) + return G.SequenceTuple1[ + IOEither[E, T.Tuple1[T1]], + IOEither[E, T1], + ](t) } // TraverseTuple1 converts a [T.Tuple1[IOEither[E, T]]] into a [IOEither[E, T.Tuple1[T1]]] func TraverseTuple1[F1 ~func(A1) IOEither[E, T1], E, A1, T1 any](f1 F1) func(T.Tuple1[A1]) IOEither[E, T.Tuple1[T1]] { - return G.TraverseTuple1[IOEither[E, T.Tuple1[T1]]](f1) + return G.TraverseTuple1[IOEither[E, T.Tuple1[T1]]](f1) } // Eitherize2 converts a function with 3 parameters returning a tuple into a function with 2 parameters returning a [IOEither[error, R]] func Eitherize2[F ~func(T1, T2) (R, error), T1, T2, R any](f F) func(T1, T2) IOEither[error, R] { - return G.Eitherize2[IOEither[error, R]](f) + return G.Eitherize2[IOEither[error, R]](f) } // Uneitherize2 converts a function with 3 parameters returning a tuple into a function with 2 parameters returning a [IOEither[error, R]] func Uneitherize2[F ~func(T1, T2) IOEither[error, R], T1, T2, R any](f F) func(T1, T2) (R, error) { - return G.Uneitherize2[IOEither[error, R]](f) + return G.Uneitherize2[IOEither[error, R]](f) } // SequenceT2 converts 2 [IOEither[E, T]] into a [IOEither[E, T.Tuple2[T1, T2]]] func SequenceT2[E, T1, T2 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], + t1 IOEither[E, T1], + t2 IOEither[E, T2], ) IOEither[E, T.Tuple2[T1, T2]] { - return G.SequenceT2[ - IOEither[E, T.Tuple2[T1, T2]], - IOEither[E, T1], - IOEither[E, T2], - ](t1, t2) + return G.SequenceT2[ + IOEither[E, T.Tuple2[T1, T2]], + IOEither[E, T1], + IOEither[E, T2], + ](t1, t2) } // SequenceTuple2 converts a [T.Tuple2[IOEither[E, T]]] into a [IOEither[E, T.Tuple2[T1, T2]]] func SequenceTuple2[E, T1, T2 any](t T.Tuple2[IOEither[E, T1], IOEither[E, T2]]) IOEither[E, T.Tuple2[T1, T2]] { - return G.SequenceTuple2[ - IOEither[E, T.Tuple2[T1, T2]], - IOEither[E, T1], - IOEither[E, T2], - ](t) + return G.SequenceTuple2[ + IOEither[E, T.Tuple2[T1, T2]], + IOEither[E, T1], + IOEither[E, T2], + ](t) } // TraverseTuple2 converts a [T.Tuple2[IOEither[E, T]]] into a [IOEither[E, T.Tuple2[T1, T2]]] func TraverseTuple2[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], E, A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) IOEither[E, T.Tuple2[T1, T2]] { - return G.TraverseTuple2[IOEither[E, T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseTuple2[IOEither[E, T.Tuple2[T1, T2]]](f1, f2) } // Eitherize3 converts a function with 4 parameters returning a tuple into a function with 3 parameters returning a [IOEither[error, R]] func Eitherize3[F ~func(T1, T2, T3) (R, error), T1, T2, T3, R any](f F) func(T1, T2, T3) IOEither[error, R] { - return G.Eitherize3[IOEither[error, R]](f) + return G.Eitherize3[IOEither[error, R]](f) } // Uneitherize3 converts a function with 4 parameters returning a tuple into a function with 3 parameters returning a [IOEither[error, R]] func Uneitherize3[F ~func(T1, T2, T3) IOEither[error, R], T1, T2, T3, R any](f F) func(T1, T2, T3) (R, error) { - return G.Uneitherize3[IOEither[error, R]](f) + return G.Uneitherize3[IOEither[error, R]](f) } // SequenceT3 converts 3 [IOEither[E, T]] into a [IOEither[E, T.Tuple3[T1, T2, T3]]] func SequenceT3[E, T1, T2, T3 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], ) IOEither[E, T.Tuple3[T1, T2, T3]] { - return G.SequenceT3[ - IOEither[E, T.Tuple3[T1, T2, T3]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - ](t1, t2, t3) + return G.SequenceT3[ + IOEither[E, T.Tuple3[T1, T2, T3]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + ](t1, t2, t3) } // SequenceTuple3 converts a [T.Tuple3[IOEither[E, T]]] into a [IOEither[E, T.Tuple3[T1, T2, T3]]] func SequenceTuple3[E, T1, T2, T3 any](t T.Tuple3[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3]]) IOEither[E, T.Tuple3[T1, T2, T3]] { - return G.SequenceTuple3[ - IOEither[E, T.Tuple3[T1, T2, T3]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - ](t) + return G.SequenceTuple3[ + IOEither[E, T.Tuple3[T1, T2, T3]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + ](t) } // TraverseTuple3 converts a [T.Tuple3[IOEither[E, T]]] into a [IOEither[E, T.Tuple3[T1, T2, T3]]] func TraverseTuple3[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], E, A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) IOEither[E, T.Tuple3[T1, T2, T3]] { - return G.TraverseTuple3[IOEither[E, T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseTuple3[IOEither[E, T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // Eitherize4 converts a function with 5 parameters returning a tuple into a function with 4 parameters returning a [IOEither[error, R]] func Eitherize4[F ~func(T1, T2, T3, T4) (R, error), T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) IOEither[error, R] { - return G.Eitherize4[IOEither[error, R]](f) + return G.Eitherize4[IOEither[error, R]](f) } // Uneitherize4 converts a function with 5 parameters returning a tuple into a function with 4 parameters returning a [IOEither[error, R]] func Uneitherize4[F ~func(T1, T2, T3, T4) IOEither[error, R], T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) (R, error) { - return G.Uneitherize4[IOEither[error, R]](f) + return G.Uneitherize4[IOEither[error, R]](f) } // SequenceT4 converts 4 [IOEither[E, T]] into a [IOEither[E, T.Tuple4[T1, T2, T3, T4]]] func SequenceT4[E, T1, T2, T3, T4 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], ) IOEither[E, T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceT4[ - IOEither[E, T.Tuple4[T1, T2, T3, T4]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - ](t1, t2, t3, t4) + return G.SequenceT4[ + IOEither[E, T.Tuple4[T1, T2, T3, T4]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + ](t1, t2, t3, t4) } // SequenceTuple4 converts a [T.Tuple4[IOEither[E, T]]] into a [IOEither[E, T.Tuple4[T1, T2, T3, T4]]] func SequenceTuple4[E, T1, T2, T3, T4 any](t T.Tuple4[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4]]) IOEither[E, T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceTuple4[ - IOEither[E, T.Tuple4[T1, T2, T3, T4]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - ](t) + return G.SequenceTuple4[ + IOEither[E, T.Tuple4[T1, T2, T3, T4]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + ](t) } // TraverseTuple4 converts a [T.Tuple4[IOEither[E, T]]] into a [IOEither[E, T.Tuple4[T1, T2, T3, T4]]] func TraverseTuple4[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], E, A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) IOEither[E, T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseTuple4[IOEither[E, T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseTuple4[IOEither[E, T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // Eitherize5 converts a function with 6 parameters returning a tuple into a function with 5 parameters returning a [IOEither[error, R]] func Eitherize5[F ~func(T1, T2, T3, T4, T5) (R, error), T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) IOEither[error, R] { - return G.Eitherize5[IOEither[error, R]](f) + return G.Eitherize5[IOEither[error, R]](f) } // Uneitherize5 converts a function with 6 parameters returning a tuple into a function with 5 parameters returning a [IOEither[error, R]] func Uneitherize5[F ~func(T1, T2, T3, T4, T5) IOEither[error, R], T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) (R, error) { - return G.Uneitherize5[IOEither[error, R]](f) + return G.Uneitherize5[IOEither[error, R]](f) } // SequenceT5 converts 5 [IOEither[E, T]] into a [IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceT5[E, T1, T2, T3, T4, T5 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], ) IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceT5[ - IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - ](t1, t2, t3, t4, t5) + return G.SequenceT5[ + IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + ](t1, t2, t3, t4, t5) } // SequenceTuple5 converts a [T.Tuple5[IOEither[E, T]]] into a [IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceTuple5[E, T1, T2, T3, T4, T5 any](t T.Tuple5[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5]]) IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceTuple5[ - IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - ](t) + return G.SequenceTuple5[ + IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + ](t) } // TraverseTuple5 converts a [T.Tuple5[IOEither[E, T]]] into a [IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]]] func TraverseTuple5[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], E, A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseTuple5[IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseTuple5[IOEither[E, T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // Eitherize6 converts a function with 7 parameters returning a tuple into a function with 6 parameters returning a [IOEither[error, R]] func Eitherize6[F ~func(T1, T2, T3, T4, T5, T6) (R, error), T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) IOEither[error, R] { - return G.Eitherize6[IOEither[error, R]](f) + return G.Eitherize6[IOEither[error, R]](f) } // Uneitherize6 converts a function with 7 parameters returning a tuple into a function with 6 parameters returning a [IOEither[error, R]] func Uneitherize6[F ~func(T1, T2, T3, T4, T5, T6) IOEither[error, R], T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) (R, error) { - return G.Uneitherize6[IOEither[error, R]](f) + return G.Uneitherize6[IOEither[error, R]](f) } // SequenceT6 converts 6 [IOEither[E, T]] into a [IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceT6[E, T1, T2, T3, T4, T5, T6 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], - t6 IOEither[E, T6], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], + t6 IOEither[E, T6], ) IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceT6[ - IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - ](t1, t2, t3, t4, t5, t6) + return G.SequenceT6[ + IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + ](t1, t2, t3, t4, t5, t6) } // SequenceTuple6 converts a [T.Tuple6[IOEither[E, T]]] into a [IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceTuple6[E, T1, T2, T3, T4, T5, T6 any](t T.Tuple6[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6]]) IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceTuple6[ - IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - ](t) + return G.SequenceTuple6[ + IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + ](t) } // TraverseTuple6 converts a [T.Tuple6[IOEither[E, T]]] into a [IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func TraverseTuple6[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], F6 ~func(A6) IOEither[E, T6], E, A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseTuple6[IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseTuple6[IOEither[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // Eitherize7 converts a function with 8 parameters returning a tuple into a function with 7 parameters returning a [IOEither[error, R]] func Eitherize7[F ~func(T1, T2, T3, T4, T5, T6, T7) (R, error), T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) IOEither[error, R] { - return G.Eitherize7[IOEither[error, R]](f) + return G.Eitherize7[IOEither[error, R]](f) } // Uneitherize7 converts a function with 8 parameters returning a tuple into a function with 7 parameters returning a [IOEither[error, R]] func Uneitherize7[F ~func(T1, T2, T3, T4, T5, T6, T7) IOEither[error, R], T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) (R, error) { - return G.Uneitherize7[IOEither[error, R]](f) + return G.Uneitherize7[IOEither[error, R]](f) } // SequenceT7 converts 7 [IOEither[E, T]] into a [IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceT7[E, T1, T2, T3, T4, T5, T6, T7 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], - t6 IOEither[E, T6], - t7 IOEither[E, T7], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], + t6 IOEither[E, T6], + t7 IOEither[E, T7], ) IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceT7[ - IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - ](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceT7[ + IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + ](t1, t2, t3, t4, t5, t6, t7) } // SequenceTuple7 converts a [T.Tuple7[IOEither[E, T]]] into a [IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceTuple7[E, T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6], IOEither[E, T7]]) IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceTuple7[ - IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - ](t) + return G.SequenceTuple7[ + IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + ](t) } // TraverseTuple7 converts a [T.Tuple7[IOEither[E, T]]] into a [IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func TraverseTuple7[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], F6 ~func(A6) IOEither[E, T6], F7 ~func(A7) IOEither[E, T7], E, A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseTuple7[IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseTuple7[IOEither[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // Eitherize8 converts a function with 9 parameters returning a tuple into a function with 8 parameters returning a [IOEither[error, R]] func Eitherize8[F ~func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) IOEither[error, R] { - return G.Eitherize8[IOEither[error, R]](f) + return G.Eitherize8[IOEither[error, R]](f) } // Uneitherize8 converts a function with 9 parameters returning a tuple into a function with 8 parameters returning a [IOEither[error, R]] func Uneitherize8[F ~func(T1, T2, T3, T4, T5, T6, T7, T8) IOEither[error, R], T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error) { - return G.Uneitherize8[IOEither[error, R]](f) + return G.Uneitherize8[IOEither[error, R]](f) } // SequenceT8 converts 8 [IOEither[E, T]] into a [IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceT8[E, T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], - t6 IOEither[E, T6], - t7 IOEither[E, T7], - t8 IOEither[E, T8], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], + t6 IOEither[E, T6], + t7 IOEither[E, T7], + t8 IOEither[E, T8], ) IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceT8[ - IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - ](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceT8[ + IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + ](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceTuple8 converts a [T.Tuple8[IOEither[E, T]]] into a [IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceTuple8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6], IOEither[E, T7], IOEither[E, T8]]) IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceTuple8[ - IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - ](t) + return G.SequenceTuple8[ + IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + ](t) } // TraverseTuple8 converts a [T.Tuple8[IOEither[E, T]]] into a [IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func TraverseTuple8[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], F6 ~func(A6) IOEither[E, T6], F7 ~func(A7) IOEither[E, T7], F8 ~func(A8) IOEither[E, T8], E, A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseTuple8[IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseTuple8[IOEither[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // Eitherize9 converts a function with 10 parameters returning a tuple into a function with 9 parameters returning a [IOEither[error, R]] func Eitherize9[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) IOEither[error, R] { - return G.Eitherize9[IOEither[error, R]](f) + return G.Eitherize9[IOEither[error, R]](f) } // Uneitherize9 converts a function with 10 parameters returning a tuple into a function with 9 parameters returning a [IOEither[error, R]] func Uneitherize9[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) IOEither[error, R], T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error) { - return G.Uneitherize9[IOEither[error, R]](f) + return G.Uneitherize9[IOEither[error, R]](f) } // SequenceT9 converts 9 [IOEither[E, T]] into a [IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceT9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], - t6 IOEither[E, T6], - t7 IOEither[E, T7], - t8 IOEither[E, T8], - t9 IOEither[E, T9], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], + t6 IOEither[E, T6], + t7 IOEither[E, T7], + t8 IOEither[E, T8], + t9 IOEither[E, T9], ) IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceT9[ - IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - IOEither[E, T9], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceT9[ + IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + IOEither[E, T9], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceTuple9 converts a [T.Tuple9[IOEither[E, T]]] into a [IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceTuple9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6], IOEither[E, T7], IOEither[E, T8], IOEither[E, T9]]) IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceTuple9[ - IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - IOEither[E, T9], - ](t) + return G.SequenceTuple9[ + IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + IOEither[E, T9], + ](t) } // TraverseTuple9 converts a [T.Tuple9[IOEither[E, T]]] into a [IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func TraverseTuple9[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], F6 ~func(A6) IOEither[E, T6], F7 ~func(A7) IOEither[E, T7], F8 ~func(A8) IOEither[E, T8], F9 ~func(A9) IOEither[E, T9], E, A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseTuple9[IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseTuple9[IOEither[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // Eitherize10 converts a function with 11 parameters returning a tuple into a function with 10 parameters returning a [IOEither[error, R]] func Eitherize10[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) IOEither[error, R] { - return G.Eitherize10[IOEither[error, R]](f) + return G.Eitherize10[IOEither[error, R]](f) } // Uneitherize10 converts a function with 11 parameters returning a tuple into a function with 10 parameters returning a [IOEither[error, R]] func Uneitherize10[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) IOEither[error, R], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error) { - return G.Uneitherize10[IOEither[error, R]](f) + return G.Uneitherize10[IOEither[error, R]](f) } // SequenceT10 converts 10 [IOEither[E, T]] into a [IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceT10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 IOEither[E, T1], - t2 IOEither[E, T2], - t3 IOEither[E, T3], - t4 IOEither[E, T4], - t5 IOEither[E, T5], - t6 IOEither[E, T6], - t7 IOEither[E, T7], - t8 IOEither[E, T8], - t9 IOEither[E, T9], - t10 IOEither[E, T10], + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], + t6 IOEither[E, T6], + t7 IOEither[E, T7], + t8 IOEither[E, T8], + t9 IOEither[E, T9], + t10 IOEither[E, T10], ) IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceT10[ - IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - IOEither[E, T9], - IOEither[E, T10], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceT10[ + IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + IOEither[E, T9], + IOEither[E, T10], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceTuple10 converts a [T.Tuple10[IOEither[E, T]]] into a [IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceTuple10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6], IOEither[E, T7], IOEither[E, T8], IOEither[E, T9], IOEither[E, T10]]) IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceTuple10[ - IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IOEither[E, T1], - IOEither[E, T2], - IOEither[E, T3], - IOEither[E, T4], - IOEither[E, T5], - IOEither[E, T6], - IOEither[E, T7], - IOEither[E, T8], - IOEither[E, T9], - IOEither[E, T10], - ](t) + return G.SequenceTuple10[ + IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IOEither[E, T1], + IOEither[E, T2], + IOEither[E, T3], + IOEither[E, T4], + IOEither[E, T5], + IOEither[E, T6], + IOEither[E, T7], + IOEither[E, T8], + IOEither[E, T9], + IOEither[E, T10], + ](t) } // TraverseTuple10 converts a [T.Tuple10[IOEither[E, T]]] into a [IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func TraverseTuple10[F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], F5 ~func(A5) IOEither[E, T5], F6 ~func(A6) IOEither[E, T6], F7 ~func(A7) IOEither[E, T7], F8 ~func(A8) IOEither[E, T8], F9 ~func(A9) IOEither[E, T9], F10 ~func(A10) IOEither[E, T10], E, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseTuple10[IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseTuple10[IOEither[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } diff --git a/ioeither/generic/gen.go b/ioeither/generic/gen.go index 1ec7dbc..a206381 100644 --- a/ioeither/generic/gen.go +++ b/ioeither/generic/gen.go @@ -3,1005 +3,1015 @@ // 2023-09-12 13:44:29.4935658 +0200 CEST m=+0.015377401 package generic - import ( ET "github.com/IBM/fp-go/either" - T "github.com/IBM/fp-go/tuple" A "github.com/IBM/fp-go/internal/apply" + T "github.com/IBM/fp-go/tuple" ) // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA] func Eitherize0[GIOA ~func() ET.Either[error, R], F ~func() (R, error), R any](f F) func() GIOA { - e := ET.Eitherize0(f) - return func() GIOA { - return func() ET.Either[error, R] { - return e() - }} + e := ET.Eitherize0(f) + return func() GIOA { + return func() ET.Either[error, R] { + return e() + } + } } // Uneitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA] func Uneitherize0[GIOA ~func() ET.Either[error, R], GTA ~func() GIOA, R any](f GTA) func() (R, error) { - return func() (R, error) { - return ET.Unwrap(f()()) - } + return func() (R, error) { + return ET.Unwrap(f()()) + } } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA] func Eitherize1[GIOA ~func() ET.Either[error, R], F ~func(T1) (R, error), T1, R any](f F) func(T1) GIOA { - e := ET.Eitherize1(f) - return func(t1 T1) GIOA { - return func() ET.Either[error, R] { - return e(t1) - }} + e := ET.Eitherize1(f) + return func(t1 T1) GIOA { + return func() ET.Either[error, R] { + return e(t1) + } + } } // Uneitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA] func Uneitherize1[GIOA ~func() ET.Either[error, R], GTA ~func(T1) GIOA, T1, R any](f GTA) func(T1) (R, error) { - return func(t1 T1) (R, error) { - return ET.Unwrap(f(t1)()) - } + return func(t1 T1) (R, error) { + return ET.Unwrap(f(t1)()) + } } // SequenceT1 converts 1 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple1[T1]]] func SequenceT1[ - G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], - G_T1 ~func() ET.Either[E, T1], - E, T1 any]( - t1 G_T1, -) G_TUPLE1 { - return A.SequenceT1( - Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], - t1, - ) + G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], + G_T1 ~func() ET.Either[E, T1], + E, T1 any]( + t1 G_T1, +) G_TUPLE1 { + return A.SequenceT1( + Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [T.Tuple1[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple1[T1]]] func SequenceTuple1[ - G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], - G_T1 ~func() ET.Either[E, T1], - E, T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { - return A.SequenceTuple1( - Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], - t) + G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], + G_T1 ~func() ET.Either[E, T1], + E, T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { + return A.SequenceTuple1( + Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], + t) } // TraverseTuple1 converts a [T.Tuple1[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple1[T1]]] func TraverseTuple1[ - G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], - F1 ~func(A1) G_T1, - G_T1 ~func() ET.Either[E, T1], - E, A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { - return func(t T.Tuple1[A1]) G_TUPLE1 { - return A.TraverseTuple1( - Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], - f1, - t) - } + G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]], + F1 ~func(A1) G_T1, + G_T1 ~func() ET.Either[E, T1], + E, A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { + return func(t T.Tuple1[A1]) G_TUPLE1 { + return A.TraverseTuple1( + Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]], + f1, + t) + } } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA] func Eitherize2[GIOA ~func() ET.Either[error, R], F ~func(T1, T2) (R, error), T1, T2, R any](f F) func(T1, T2) GIOA { - e := ET.Eitherize2(f) - return func(t1 T1, t2 T2) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2) - }} + e := ET.Eitherize2(f) + return func(t1 T1, t2 T2) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2) + } + } } // Uneitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA] func Uneitherize2[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2) GIOA, T1, T2, R any](f GTA) func(T1, T2) (R, error) { - return func(t1 T1, t2 T2) (R, error) { - return ET.Unwrap(f(t1, t2)()) - } + return func(t1 T1, t2 T2) (R, error) { + return ET.Unwrap(f(t1, t2)()) + } } // SequenceT2 converts 2 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]] func SequenceT2[ - G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - E, T1, T2 any]( - t1 G_T1, - t2 G_T2, -) G_TUPLE2 { - return A.SequenceT2( - Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - t1, - t2, - ) + G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + E, T1, T2 any]( + t1 G_T1, + t2 G_T2, +) G_TUPLE2 { + return A.SequenceT2( + Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], + t1, + t2, + ) } // SequenceTuple2 converts a [T.Tuple2[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]] func SequenceTuple2[ - G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - E, T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { - return A.SequenceTuple2( - Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - t) + G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + E, T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { + return A.SequenceTuple2( + Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], + t) } // TraverseTuple2 converts a [T.Tuple2[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]] func TraverseTuple2[ - G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - E, A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { - return func(t T.Tuple2[A1, A2]) G_TUPLE2 { - return A.TraverseTuple2( - Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - f1, - f2, - t) - } + G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + E, A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { + return func(t T.Tuple2[A1, A2]) G_TUPLE2 { + return A.TraverseTuple2( + Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], + f1, + f2, + t) + } } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA] func Eitherize3[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3) (R, error), T1, T2, T3, R any](f F) func(T1, T2, T3) GIOA { - e := ET.Eitherize3(f) - return func(t1 T1, t2 T2, t3 T3) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3) - }} + e := ET.Eitherize3(f) + return func(t1 T1, t2 T2, t3 T3) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3) + } + } } // Uneitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA] func Uneitherize3[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3) GIOA, T1, T2, T3, R any](f GTA) func(T1, T2, T3) (R, error) { - return func(t1 T1, t2 T2, t3 T3) (R, error) { - return ET.Unwrap(f(t1, t2, t3)()) - } + return func(t1 T1, t2 T2, t3 T3) (R, error) { + return ET.Unwrap(f(t1, t2, t3)()) + } } // SequenceT3 converts 3 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]] func SequenceT3[ - G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - E, T1, T2, T3 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, -) G_TUPLE3 { - return A.SequenceT3( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t1, - t2, - t3, - ) + G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + E, T1, T2, T3 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, +) G_TUPLE3 { + return A.SequenceT3( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [T.Tuple3[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]] func SequenceTuple3[ - G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - E, T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { - return A.SequenceTuple3( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t) + G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + E, T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { + return A.SequenceTuple3( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], + t) } // TraverseTuple3 converts a [T.Tuple3[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]] func TraverseTuple3[ - G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - E, A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return A.TraverseTuple3( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - f1, - f2, - f3, - t) - } + G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + E, A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return A.TraverseTuple3( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], + f1, + f2, + f3, + t) + } } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA] func Eitherize4[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4) (R, error), T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) GIOA { - e := ET.Eitherize4(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4) - }} + e := ET.Eitherize4(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4) + } + } } // Uneitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA] func Uneitherize4[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4) GIOA, T1, T2, T3, T4, R any](f GTA) func(T1, T2, T3, T4) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4)()) + } } // SequenceT4 converts 4 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]] func SequenceT4[ - G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - E, T1, T2, T3, T4 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, -) G_TUPLE4 { - return A.SequenceT4( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t1, - t2, - t3, - t4, - ) + G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + E, T1, T2, T3, T4 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, +) G_TUPLE4 { + return A.SequenceT4( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [T.Tuple4[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]] func SequenceTuple4[ - G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - E, T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { - return A.SequenceTuple4( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t) + G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + E, T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { + return A.SequenceTuple4( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + t) } // TraverseTuple4 converts a [T.Tuple4[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]] func TraverseTuple4[ - G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - E, A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return A.TraverseTuple4( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - f1, - f2, - f3, - f4, - t) - } + G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + E, A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return A.TraverseTuple4( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + f1, + f2, + f3, + f4, + t) + } } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA] func Eitherize5[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5) (R, error), T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) GIOA { - e := ET.Eitherize5(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5) - }} + e := ET.Eitherize5(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5) + } + } } // Uneitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA] func Uneitherize5[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5) GIOA, T1, T2, T3, T4, T5, R any](f GTA) func(T1, T2, T3, T4, T5) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5)()) + } } // SequenceT5 converts 5 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceT5[ - G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - E, T1, T2, T3, T4, T5 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, -) G_TUPLE5 { - return A.SequenceT5( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t1, - t2, - t3, - t4, - t5, - ) + G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + E, T1, T2, T3, T4, T5 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, +) G_TUPLE5 { + return A.SequenceT5( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [T.Tuple5[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceTuple5[ - G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - E, T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { - return A.SequenceTuple5( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t) + G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + E, T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { + return A.SequenceTuple5( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + t) } // TraverseTuple5 converts a [T.Tuple5[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] func TraverseTuple5[ - G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - E, A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return A.TraverseTuple5( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - f1, - f2, - f3, - f4, - f5, - t) - } + G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + E, A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return A.TraverseTuple5( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + f1, + f2, + f3, + f4, + f5, + t) + } } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA] func Eitherize6[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6) (R, error), T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) GIOA { - e := ET.Eitherize6(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5, t6) - }} + e := ET.Eitherize6(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5, t6) + } + } } // Uneitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA] func Uneitherize6[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6) GIOA, T1, T2, T3, T4, T5, T6, R any](f GTA) func(T1, T2, T3, T4, T5, T6) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5, t6)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5, t6)()) + } } // SequenceT6 converts 6 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceT6[ - G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - E, T1, T2, T3, T4, T5, T6 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, -) G_TUPLE6 { - return A.SequenceT6( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + E, T1, T2, T3, T4, T5, T6 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, +) G_TUPLE6 { + return A.SequenceT6( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [T.Tuple6[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceTuple6[ - G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - E, T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { - return A.SequenceTuple6( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - t) + G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + E, T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { + return A.SequenceTuple6( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + t) } // TraverseTuple6 converts a [T.Tuple6[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] func TraverseTuple6[ - G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - E, A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return A.TraverseTuple6( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t) - } + G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + E, A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return A.TraverseTuple6( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t) + } } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA] func Eitherize7[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7) (R, error), T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) GIOA { - e := ET.Eitherize7(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7) - }} + e := ET.Eitherize7(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5, t6, t7) + } + } } // Uneitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA] func Uneitherize7[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7) GIOA, T1, T2, T3, T4, T5, T6, T7, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7)()) + } } // SequenceT7 converts 7 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceT7[ - G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - E, T1, T2, T3, T4, T5, T6, T7 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, -) G_TUPLE7 { - return A.SequenceT7( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + E, T1, T2, T3, T4, T5, T6, T7 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, +) G_TUPLE7 { + return A.SequenceT7( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [T.Tuple7[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceTuple7[ - G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - E, T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { - return A.SequenceTuple7( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - t) + G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + E, T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { + return A.SequenceTuple7( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + t) } // TraverseTuple7 converts a [T.Tuple7[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func TraverseTuple7[ - G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - E, A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return A.TraverseTuple7( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t) - } + G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + E, A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return A.TraverseTuple7( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t) + } } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA] func Eitherize8[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA { - e := ET.Eitherize8(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8) - }} + e := ET.Eitherize8(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5, t6, t7, t8) + } + } } // Uneitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA] func Uneitherize8[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8)()) + } } // SequenceT8 converts 8 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceT8[ - G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - E, T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, -) G_TUPLE8 { - return A.SequenceT8( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + E, T1, T2, T3, T4, T5, T6, T7, T8 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, +) G_TUPLE8 { + return A.SequenceT8( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [T.Tuple8[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceTuple8[ - G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - E, T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { - return A.SequenceTuple8( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - t) + G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + E, T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { + return A.SequenceTuple8( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + t) } // TraverseTuple8 converts a [T.Tuple8[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func TraverseTuple8[ - G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - E, A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return A.TraverseTuple8( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t) - } + G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + E, A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return A.TraverseTuple8( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t) + } } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA] func Eitherize9[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA { - e := ET.Eitherize9(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8, t9) - }} + e := ET.Eitherize9(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5, t6, t7, t8, t9) + } + } } // Uneitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA] func Uneitherize9[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9)()) + } } // SequenceT9 converts 9 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceT9[ - G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, -) G_TUPLE9 { - return A.SequenceT9( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, +) G_TUPLE9 { + return A.SequenceT9( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [T.Tuple9[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceTuple9[ - G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { - return A.SequenceTuple9( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - t) + G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { + return A.SequenceTuple9( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + t) } // TraverseTuple9 converts a [T.Tuple9[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func TraverseTuple9[ - G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - E, A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return A.TraverseTuple9( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t) - } + G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + E, A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return A.TraverseTuple9( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t) + } } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA] func Eitherize10[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA { - e := ET.Eitherize10(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) GIOA { - return func() ET.Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) - }} + e := ET.Eitherize10(f) + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) GIOA { + return func() ET.Either[error, R] { + return e(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + } + } } // Uneitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA] func Uneitherize10[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error) { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) (R, error) { - return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)()) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) (R, error) { + return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)()) + } } // SequenceT10 converts 10 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceT10[ - G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - G_T10 ~func() ET.Either[E, T10], - E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, - t10 G_T10, -) G_TUPLE10 { - return A.SequenceT10( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + G_T10 ~func() ET.Either[E, T10], + E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, + t10 G_T10, +) G_TUPLE10 { + return A.SequenceT10( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [T.Tuple10[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceTuple10[ - G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - G_T10 ~func() ET.Either[E, T10], - E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { - return A.SequenceTuple10( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - t) + G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + G_T10 ~func() ET.Either[E, T10], + E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { + return A.SequenceTuple10( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + t) } // TraverseTuple10 converts a [T.Tuple10[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func TraverseTuple10[ - G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - F10 ~func(A10) G_T10, - G_T1 ~func() ET.Either[E, T1], - G_T2 ~func() ET.Either[E, T2], - G_T3 ~func() ET.Either[E, T3], - G_T4 ~func() ET.Either[E, T4], - G_T5 ~func() ET.Either[E, T5], - G_T6 ~func() ET.Either[E, T6], - G_T7 ~func() ET.Either[E, T7], - G_T8 ~func() ET.Either[E, T8], - G_T9 ~func() ET.Either[E, T9], - G_T10 ~func() ET.Either[E, T10], - E, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return A.TraverseTuple10( - Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t) - } + G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + F10 ~func(A10) G_T10, + G_T1 ~func() ET.Either[E, T1], + G_T2 ~func() ET.Either[E, T2], + G_T3 ~func() ET.Either[E, T3], + G_T4 ~func() ET.Either[E, T4], + G_T5 ~func() ET.Either[E, T5], + G_T6 ~func() ET.Either[E, T6], + G_T7 ~func() ET.Either[E, T7], + G_T8 ~func() ET.Either[E, T8], + G_T9 ~func() ET.Either[E, T9], + G_T10 ~func() ET.Either[E, T10], + E, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return A.TraverseTuple10( + Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t) + } } diff --git a/ioeither/generic/ioeither.go b/ioeither/generic/ioeither.go index ebf6ca1..e88b3d2 100644 --- a/ioeither/generic/ioeither.go +++ b/ioeither/generic/ioeither.go @@ -290,3 +290,17 @@ func FromImpure[GA ~func() ET.Either[E, any], IMP ~func(), E any](f IMP) GA { func Defer[GEA ~func() ET.Either[E, A], E, A any](gen func() GEA) GEA { return IO.Defer[GEA](gen) } + +func MonadAlt[LAZY ~func() GIOA, GIOA ~func() ET.Either[E, A], E, A any](first GIOA, second LAZY) GIOA { + return eithert.MonadAlt( + IO.Of[GIOA], + IO.MonadChain[GIOA, GIOA], + + first, + second, + ) +} + +func Alt[LAZY ~func() GIOA, GIOA ~func() ET.Either[E, A], E, A any](second LAZY) func(GIOA) GIOA { + return F.Bind2nd(MonadAlt[LAZY], second) +} diff --git a/ioeither/generic/monoid.go b/ioeither/generic/monoid.go new file mode 100644 index 0000000..15ff277 --- /dev/null +++ b/ioeither/generic/monoid.go @@ -0,0 +1,54 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package generic + +import ( + ET "github.com/IBM/fp-go/either" + M "github.com/IBM/fp-go/monoid" +) + +func ApplicativeMonoid[GEA ~func() ET.Either[E, A], GEFA ~func() ET.Either[E, func(A) A], E, A any]( + m M.Monoid[A], +) M.Monoid[GEA] { + return M.ApplicativeMonoid( + MonadOf[GEA], + MonadMap[GEA, GEFA], + MonadAp[GEA, GEFA, GEA], + m, + ) +} + +func ApplicativeMonoidSeq[GEA ~func() ET.Either[E, A], GEFA ~func() ET.Either[E, func(A) A], E, A any]( + m M.Monoid[A], +) M.Monoid[GEA] { + return M.ApplicativeMonoid( + MonadOf[GEA], + MonadMap[GEA, GEFA], + MonadApSeq[GEA, GEFA, GEA], + m, + ) +} + +func ApplicativeMonoidPar[GEA ~func() ET.Either[E, A], GEFA ~func() ET.Either[E, func(A) A], E, A any]( + m M.Monoid[A], +) M.Monoid[GEA] { + return M.ApplicativeMonoid( + MonadOf[GEA], + MonadMap[GEA, GEFA], + MonadApPar[GEA, GEFA, GEA], + m, + ) +} diff --git a/ioeither/generic/semigroup.go b/ioeither/generic/semigroup.go new file mode 100644 index 0000000..7e71512 --- /dev/null +++ b/ioeither/generic/semigroup.go @@ -0,0 +1,27 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package generic + +import ( + ET "github.com/IBM/fp-go/either" + S "github.com/IBM/fp-go/semigroup" +) + +func AltSemigroup[GIOA ~func() ET.Either[E, A], E, A any]() S.Semigroup[GIOA] { + return S.AltSemigroup( + MonadAlt[func() GIOA], + ) +} diff --git a/ioeither/ioeither.go b/ioeither/ioeither.go index b5ecc35..32c5544 100644 --- a/ioeither/ioeither.go +++ b/ioeither/ioeither.go @@ -19,6 +19,7 @@ import ( ET "github.com/IBM/fp-go/either" I "github.com/IBM/fp-go/io" G "github.com/IBM/fp-go/ioeither/generic" + L "github.com/IBM/fp-go/lazy" O "github.com/IBM/fp-go/option" ) @@ -207,6 +208,16 @@ func FromImpure[E any](f func()) IOEither[E, any] { } // Defer creates an IO by creating a brand new IO via a generator function, each time -func Defer[E, A any](gen func() IOEither[E, A]) IOEither[E, A] { +func Defer[E, A any](gen L.Lazy[IOEither[E, A]]) IOEither[E, A] { return G.Defer[IOEither[E, A]](gen) } + +// MonadAlt identifies an associative operation on a type constructor +func MonadAlt[E, A any](first IOEither[E, A], second L.Lazy[IOEither[E, A]]) IOEither[E, A] { + return G.MonadAlt(first, second) +} + +// Alt identifies an associative operation on a type constructor +func Alt[E, A any](second L.Lazy[IOEither[E, A]]) func(IOEither[E, A]) IOEither[E, A] { + return G.Alt(second) +} diff --git a/ioeither/monoid.go b/ioeither/monoid.go new file mode 100644 index 0000000..fb8b92b --- /dev/null +++ b/ioeither/monoid.go @@ -0,0 +1,42 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ioeither + +import ( + G "github.com/IBM/fp-go/ioeither/generic" + M "github.com/IBM/fp-go/monoid" +) + +// ApplicativeMonoid returns a [Monoid] that concatenates [IOEither] instances via their applicative +func ApplicativeMonoid[E, A any]( + m M.Monoid[A], +) M.Monoid[IOEither[E, A]] { + return G.ApplicativeMonoid[IOEither[E, A], IOEither[E, func(A) A]](m) +} + +// ApplicativeMonoid returns a [Monoid] that concatenates [IOEither] instances via their applicative +func ApplicativeMonoidSeq[E, A any]( + m M.Monoid[A], +) M.Monoid[IOEither[E, A]] { + return G.ApplicativeMonoidSeq[IOEither[E, A], IOEither[E, func(A) A]](m) +} + +// ApplicativeMonoid returns a [Monoid] that concatenates [IOEither] instances via their applicative +func ApplicativeMonoidPar[E, A any]( + m M.Monoid[A], +) M.Monoid[IOEither[E, A]] { + return G.ApplicativeMonoid[IOEither[E, A], IOEither[E, func(A) A]](m) +} diff --git a/ioeither/monoid_test.go b/ioeither/monoid_test.go new file mode 100644 index 0000000..2581ed3 --- /dev/null +++ b/ioeither/monoid_test.go @@ -0,0 +1,42 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ioeither + +import ( + "fmt" + "testing" + + E "github.com/IBM/fp-go/either" + S "github.com/IBM/fp-go/string" + "github.com/stretchr/testify/assert" +) + +func TestApplicativeMonoid(t *testing.T) { + m := ApplicativeMonoid[error](S.Monoid) + + // good cases + assert.Equal(t, E.Of[error]("ab"), m.Concat(Of[error]("a"), Of[error]("b"))()) + assert.Equal(t, E.Of[error]("a"), m.Concat(Of[error]("a"), m.Empty())()) + assert.Equal(t, E.Of[error]("b"), m.Concat(m.Empty(), Of[error]("b"))()) + + // bad cases + e1 := fmt.Errorf("e1") + e2 := fmt.Errorf("e1") + + assert.Equal(t, E.Left[string](e1), m.Concat(Left[string](e1), Of[error]("b"))()) + assert.Equal(t, E.Left[string](e1), m.Concat(Left[string](e1), Left[string](e2))()) + assert.Equal(t, E.Left[string](e2), m.Concat(Of[error]("a"), Left[string](e2))()) +} diff --git a/ioeither/semigroup.go b/ioeither/semigroup.go new file mode 100644 index 0000000..4cbbf24 --- /dev/null +++ b/ioeither/semigroup.go @@ -0,0 +1,26 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package ioeither + +import ( + G "github.com/IBM/fp-go/ioeither/generic" + S "github.com/IBM/fp-go/semigroup" +) + +// AltSemigroup is a [Semigroup] that tries the first item and then the second one using an alternative +func AltSemigroup[E, A any]() S.Semigroup[IOEither[E, A]] { + return G.AltSemigroup[IOEither[E, A]]() +} diff --git a/iooption/gen.go b/iooption/gen.go index 8bd9082..a39842c 100644 --- a/iooption/gen.go +++ b/iooption/gen.go @@ -4,373 +4,372 @@ package iooption - import ( - G "github.com/IBM/fp-go/iooption/generic" + G "github.com/IBM/fp-go/iooption/generic" T "github.com/IBM/fp-go/tuple" ) // SequenceT1 converts 1 [IOOption[T]] into a [IOOption[T.Tuple1[T1]]] func SequenceT1[T1 any]( - t1 IOOption[T1], + t1 IOOption[T1], ) IOOption[T.Tuple1[T1]] { - return G.SequenceT1[ - IOOption[T.Tuple1[T1]], - IOOption[T1], - ](t1) + return G.SequenceT1[ + IOOption[T.Tuple1[T1]], + IOOption[T1], + ](t1) } // SequenceTuple1 converts a [T.Tuple1[IOOption[T]]] into a [IOOption[T.Tuple1[T1]]] func SequenceTuple1[T1 any](t T.Tuple1[IOOption[T1]]) IOOption[T.Tuple1[T1]] { - return G.SequenceTuple1[ - IOOption[T.Tuple1[T1]], - IOOption[T1], - ](t) + return G.SequenceTuple1[ + IOOption[T.Tuple1[T1]], + IOOption[T1], + ](t) } // TraverseTuple1 converts a [T.Tuple1[IOOption[T]]] into a [IOOption[T.Tuple1[T1]]] func TraverseTuple1[F1 ~func(A1) IOOption[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) IOOption[T.Tuple1[T1]] { - return G.TraverseTuple1[IOOption[T.Tuple1[T1]]](f1) + return G.TraverseTuple1[IOOption[T.Tuple1[T1]]](f1) } // SequenceT2 converts 2 [IOOption[T]] into a [IOOption[T.Tuple2[T1, T2]]] func SequenceT2[T1, T2 any]( - t1 IOOption[T1], - t2 IOOption[T2], + t1 IOOption[T1], + t2 IOOption[T2], ) IOOption[T.Tuple2[T1, T2]] { - return G.SequenceT2[ - IOOption[T.Tuple2[T1, T2]], - IOOption[T1], - IOOption[T2], - ](t1, t2) + return G.SequenceT2[ + IOOption[T.Tuple2[T1, T2]], + IOOption[T1], + IOOption[T2], + ](t1, t2) } // SequenceTuple2 converts a [T.Tuple2[IOOption[T]]] into a [IOOption[T.Tuple2[T1, T2]]] func SequenceTuple2[T1, T2 any](t T.Tuple2[IOOption[T1], IOOption[T2]]) IOOption[T.Tuple2[T1, T2]] { - return G.SequenceTuple2[ - IOOption[T.Tuple2[T1, T2]], - IOOption[T1], - IOOption[T2], - ](t) + return G.SequenceTuple2[ + IOOption[T.Tuple2[T1, T2]], + IOOption[T1], + IOOption[T2], + ](t) } // TraverseTuple2 converts a [T.Tuple2[IOOption[T]]] into a [IOOption[T.Tuple2[T1, T2]]] func TraverseTuple2[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) IOOption[T.Tuple2[T1, T2]] { - return G.TraverseTuple2[IOOption[T.Tuple2[T1, T2]]](f1, f2) + return G.TraverseTuple2[IOOption[T.Tuple2[T1, T2]]](f1, f2) } // SequenceT3 converts 3 [IOOption[T]] into a [IOOption[T.Tuple3[T1, T2, T3]]] func SequenceT3[T1, T2, T3 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], ) IOOption[T.Tuple3[T1, T2, T3]] { - return G.SequenceT3[ - IOOption[T.Tuple3[T1, T2, T3]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - ](t1, t2, t3) + return G.SequenceT3[ + IOOption[T.Tuple3[T1, T2, T3]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + ](t1, t2, t3) } // SequenceTuple3 converts a [T.Tuple3[IOOption[T]]] into a [IOOption[T.Tuple3[T1, T2, T3]]] func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[IOOption[T1], IOOption[T2], IOOption[T3]]) IOOption[T.Tuple3[T1, T2, T3]] { - return G.SequenceTuple3[ - IOOption[T.Tuple3[T1, T2, T3]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - ](t) + return G.SequenceTuple3[ + IOOption[T.Tuple3[T1, T2, T3]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + ](t) } // TraverseTuple3 converts a [T.Tuple3[IOOption[T]]] into a [IOOption[T.Tuple3[T1, T2, T3]]] func TraverseTuple3[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) IOOption[T.Tuple3[T1, T2, T3]] { - return G.TraverseTuple3[IOOption[T.Tuple3[T1, T2, T3]]](f1, f2, f3) + return G.TraverseTuple3[IOOption[T.Tuple3[T1, T2, T3]]](f1, f2, f3) } // SequenceT4 converts 4 [IOOption[T]] into a [IOOption[T.Tuple4[T1, T2, T3, T4]]] func SequenceT4[T1, T2, T3, T4 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], ) IOOption[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceT4[ - IOOption[T.Tuple4[T1, T2, T3, T4]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - ](t1, t2, t3, t4) + return G.SequenceT4[ + IOOption[T.Tuple4[T1, T2, T3, T4]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + ](t1, t2, t3, t4) } // SequenceTuple4 converts a [T.Tuple4[IOOption[T]]] into a [IOOption[T.Tuple4[T1, T2, T3, T4]]] func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4]]) IOOption[T.Tuple4[T1, T2, T3, T4]] { - return G.SequenceTuple4[ - IOOption[T.Tuple4[T1, T2, T3, T4]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - ](t) + return G.SequenceTuple4[ + IOOption[T.Tuple4[T1, T2, T3, T4]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + ](t) } // TraverseTuple4 converts a [T.Tuple4[IOOption[T]]] into a [IOOption[T.Tuple4[T1, T2, T3, T4]]] func TraverseTuple4[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) IOOption[T.Tuple4[T1, T2, T3, T4]] { - return G.TraverseTuple4[IOOption[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) + return G.TraverseTuple4[IOOption[T.Tuple4[T1, T2, T3, T4]]](f1, f2, f3, f4) } // SequenceT5 converts 5 [IOOption[T]] into a [IOOption[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceT5[T1, T2, T3, T4, T5 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], ) IOOption[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceT5[ - IOOption[T.Tuple5[T1, T2, T3, T4, T5]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - ](t1, t2, t3, t4, t5) + return G.SequenceT5[ + IOOption[T.Tuple5[T1, T2, T3, T4, T5]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + ](t1, t2, t3, t4, t5) } // SequenceTuple5 converts a [T.Tuple5[IOOption[T]]] into a [IOOption[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5]]) IOOption[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.SequenceTuple5[ - IOOption[T.Tuple5[T1, T2, T3, T4, T5]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - ](t) + return G.SequenceTuple5[ + IOOption[T.Tuple5[T1, T2, T3, T4, T5]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + ](t) } // TraverseTuple5 converts a [T.Tuple5[IOOption[T]]] into a [IOOption[T.Tuple5[T1, T2, T3, T4, T5]]] func TraverseTuple5[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) IOOption[T.Tuple5[T1, T2, T3, T4, T5]] { - return G.TraverseTuple5[IOOption[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) + return G.TraverseTuple5[IOOption[T.Tuple5[T1, T2, T3, T4, T5]]](f1, f2, f3, f4, f5) } // SequenceT6 converts 6 [IOOption[T]] into a [IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceT6[T1, T2, T3, T4, T5, T6 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], - t6 IOOption[T6], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], + t6 IOOption[T6], ) IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceT6[ - IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - ](t1, t2, t3, t4, t5, t6) + return G.SequenceT6[ + IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + ](t1, t2, t3, t4, t5, t6) } // SequenceTuple6 converts a [T.Tuple6[IOOption[T]]] into a [IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6]]) IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.SequenceTuple6[ - IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - ](t) + return G.SequenceTuple6[ + IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + ](t) } // TraverseTuple6 converts a [T.Tuple6[IOOption[T]]] into a [IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func TraverseTuple6[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return G.TraverseTuple6[IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) + return G.TraverseTuple6[IOOption[T.Tuple6[T1, T2, T3, T4, T5, T6]]](f1, f2, f3, f4, f5, f6) } // SequenceT7 converts 7 [IOOption[T]] into a [IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], - t6 IOOption[T6], - t7 IOOption[T7], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], + t6 IOOption[T6], + t7 IOOption[T7], ) IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceT7[ - IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - ](t1, t2, t3, t4, t5, t6, t7) + return G.SequenceT7[ + IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + ](t1, t2, t3, t4, t5, t6, t7) } // SequenceTuple7 converts a [T.Tuple7[IOOption[T]]] into a [IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7]]) IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.SequenceTuple7[ - IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - ](t) + return G.SequenceTuple7[ + IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + ](t) } // TraverseTuple7 converts a [T.Tuple7[IOOption[T]]] into a [IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func TraverseTuple7[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return G.TraverseTuple7[IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) + return G.TraverseTuple7[IOOption[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]](f1, f2, f3, f4, f5, f6, f7) } // SequenceT8 converts 8 [IOOption[T]] into a [IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], - t6 IOOption[T6], - t7 IOOption[T7], - t8 IOOption[T8], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], + t6 IOOption[T6], + t7 IOOption[T7], + t8 IOOption[T8], ) IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceT8[ - IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - ](t1, t2, t3, t4, t5, t6, t7, t8) + return G.SequenceT8[ + IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + ](t1, t2, t3, t4, t5, t6, t7, t8) } // SequenceTuple8 converts a [T.Tuple8[IOOption[T]]] into a [IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8]]) IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.SequenceTuple8[ - IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - ](t) + return G.SequenceTuple8[ + IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + ](t) } // TraverseTuple8 converts a [T.Tuple8[IOOption[T]]] into a [IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func TraverseTuple8[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return G.TraverseTuple8[IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) + return G.TraverseTuple8[IOOption[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]](f1, f2, f3, f4, f5, f6, f7, f8) } // SequenceT9 converts 9 [IOOption[T]] into a [IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], - t6 IOOption[T6], - t7 IOOption[T7], - t8 IOOption[T8], - t9 IOOption[T9], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], + t6 IOOption[T6], + t7 IOOption[T7], + t8 IOOption[T8], + t9 IOOption[T9], ) IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceT9[ - IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - IOOption[T9], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9) + return G.SequenceT9[ + IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + IOOption[T9], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9) } // SequenceTuple9 converts a [T.Tuple9[IOOption[T]]] into a [IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8], IOOption[T9]]) IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.SequenceTuple9[ - IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - IOOption[T9], - ](t) + return G.SequenceTuple9[ + IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + IOOption[T9], + ](t) } // TraverseTuple9 converts a [T.Tuple9[IOOption[T]]] into a [IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func TraverseTuple9[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], F9 ~func(A9) IOOption[T9], A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return G.TraverseTuple9[IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) + return G.TraverseTuple9[IOOption[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]](f1, f2, f3, f4, f5, f6, f7, f8, f9) } // SequenceT10 converts 10 [IOOption[T]] into a [IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 IOOption[T1], - t2 IOOption[T2], - t3 IOOption[T3], - t4 IOOption[T4], - t5 IOOption[T5], - t6 IOOption[T6], - t7 IOOption[T7], - t8 IOOption[T8], - t9 IOOption[T9], - t10 IOOption[T10], + t1 IOOption[T1], + t2 IOOption[T2], + t3 IOOption[T3], + t4 IOOption[T4], + t5 IOOption[T5], + t6 IOOption[T6], + t7 IOOption[T7], + t8 IOOption[T8], + t9 IOOption[T9], + t10 IOOption[T10], ) IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceT10[ - IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - IOOption[T9], - IOOption[T10], - ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) + return G.SequenceT10[ + IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + IOOption[T9], + IOOption[T10], + ](t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } // SequenceTuple10 converts a [T.Tuple10[IOOption[T]]] into a [IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8], IOOption[T9], IOOption[T10]]) IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.SequenceTuple10[ - IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - IOOption[T1], - IOOption[T2], - IOOption[T3], - IOOption[T4], - IOOption[T5], - IOOption[T6], - IOOption[T7], - IOOption[T8], - IOOption[T9], - IOOption[T10], - ](t) + return G.SequenceTuple10[ + IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + IOOption[T1], + IOOption[T2], + IOOption[T3], + IOOption[T4], + IOOption[T5], + IOOption[T6], + IOOption[T7], + IOOption[T8], + IOOption[T9], + IOOption[T10], + ](t) } // TraverseTuple10 converts a [T.Tuple10[IOOption[T]]] into a [IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func TraverseTuple10[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], F9 ~func(A9) IOOption[T9], F10 ~func(A10) IOOption[T10], A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return G.TraverseTuple10[IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) + return G.TraverseTuple10[IOOption[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]](f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) } diff --git a/iooption/generic/gen.go b/iooption/generic/gen.go index f17abc8..03961f8 100644 --- a/iooption/generic/gen.go +++ b/iooption/generic/gen.go @@ -3,829 +3,828 @@ // 2023-09-12 13:44:32.1546277 +0200 CEST m=+0.102076401 package generic - import ( - T "github.com/IBM/fp-go/tuple" - O "github.com/IBM/fp-go/option" A "github.com/IBM/fp-go/internal/apply" + O "github.com/IBM/fp-go/option" + T "github.com/IBM/fp-go/tuple" ) // SequenceT1 converts 1 [func() O.Option[T]] into a [func() O.Option[T.Tuple1[T1]]] func SequenceT1[ - G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], - G_T1 ~func() O.Option[T1], - T1 any]( - t1 G_T1, -) G_TUPLE1 { - return A.SequenceT1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - t1, - ) + G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], + G_T1 ~func() O.Option[T1], + T1 any]( + t1 G_T1, +) G_TUPLE1 { + return A.SequenceT1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [T.Tuple1[func() O.Option[T]]] into a [func() O.Option[T.Tuple1[T1]]] func SequenceTuple1[ - G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], - G_T1 ~func() O.Option[T1], - T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { - return A.SequenceTuple1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - t) + G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], + G_T1 ~func() O.Option[T1], + T1 any](t T.Tuple1[G_T1]) G_TUPLE1 { + return A.SequenceTuple1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + t) } // TraverseTuple1 converts a [T.Tuple1[func() O.Option[T]]] into a [func() O.Option[T.Tuple1[T1]]] func TraverseTuple1[ - G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], - F1 ~func(A1) G_T1, - G_T1 ~func() O.Option[T1], - A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { - return func(t T.Tuple1[A1]) G_TUPLE1 { - return A.TraverseTuple1( - Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], - f1, - t) - } + G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], + F1 ~func(A1) G_T1, + G_T1 ~func() O.Option[T1], + A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 { + return func(t T.Tuple1[A1]) G_TUPLE1 { + return A.TraverseTuple1( + Map[G_T1, G_TUPLE1, T1, T.Tuple1[T1]], + f1, + t) + } } // SequenceT2 converts 2 [func() O.Option[T]] into a [func() O.Option[T.Tuple2[T1, T2]]] func SequenceT2[ - G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - T1, T2 any]( - t1 G_T1, - t2 G_T2, -) G_TUPLE2 { - return A.SequenceT2( - Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], - t1, - t2, - ) + G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + T1, T2 any]( + t1 G_T1, + t2 G_T2, +) G_TUPLE2 { + return A.SequenceT2( + Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], + t1, + t2, + ) } // SequenceTuple2 converts a [T.Tuple2[func() O.Option[T]]] into a [func() O.Option[T.Tuple2[T1, T2]]] func SequenceTuple2[ - G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { - return A.SequenceTuple2( - Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], - t) + G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { + return A.SequenceTuple2( + Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], + t) } // TraverseTuple2 converts a [T.Tuple2[func() O.Option[T]]] into a [func() O.Option[T.Tuple2[T1, T2]]] func TraverseTuple2[ - G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { - return func(t T.Tuple2[A1, A2]) G_TUPLE2 { - return A.TraverseTuple2( - Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], - f1, - f2, - t) - } + G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 { + return func(t T.Tuple2[A1, A2]) G_TUPLE2 { + return A.TraverseTuple2( + Map[G_T1, func() O.Option[func(T2) T.Tuple2[T1, T2]], T1, func(T2) T.Tuple2[T1, T2]], + Ap[G_TUPLE2, func() O.Option[func(T2) T.Tuple2[T1, T2]], G_T2], + f1, + f2, + t) + } } // SequenceT3 converts 3 [func() O.Option[T]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]] func SequenceT3[ - G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - T1, T2, T3 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, -) G_TUPLE3 { - return A.SequenceT3( - Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t1, - t2, - t3, - ) + G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + T1, T2, T3 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, +) G_TUPLE3 { + return A.SequenceT3( + Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [T.Tuple3[func() O.Option[T]]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]] func SequenceTuple3[ - G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { - return A.SequenceTuple3( - Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t) + G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 { + return A.SequenceTuple3( + Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], + t) } // TraverseTuple3 converts a [T.Tuple3[func() O.Option[T]]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]] func TraverseTuple3[ - G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { - return A.TraverseTuple3( - Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], - f1, - f2, - f3, - t) - } + G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 { + return A.TraverseTuple3( + Map[G_T1, func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], func() O.Option[func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], + Ap[G_TUPLE3, func() O.Option[func(T3) T.Tuple3[T1, T2, T3]], G_T3], + f1, + f2, + f3, + t) + } } // SequenceT4 converts 4 [func() O.Option[T]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]] func SequenceT4[ - G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - T1, T2, T3, T4 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, -) G_TUPLE4 { - return A.SequenceT4( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t1, - t2, - t3, - t4, - ) + G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + T1, T2, T3, T4 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, +) G_TUPLE4 { + return A.SequenceT4( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [T.Tuple4[func() O.Option[T]]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]] func SequenceTuple4[ - G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { - return A.SequenceTuple4( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t) + G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 { + return A.SequenceTuple4( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + t) } // TraverseTuple4 converts a [T.Tuple4[func() O.Option[T]]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]] func TraverseTuple4[ - G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { - return A.TraverseTuple4( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - f1, - f2, - f3, - f4, - t) - } + G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 { + return A.TraverseTuple4( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], + Ap[func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], func() O.Option[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], + Ap[G_TUPLE4, func() O.Option[func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], + f1, + f2, + f3, + f4, + t) + } } // SequenceT5 converts 5 [func() O.Option[T]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceT5[ - G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - T1, T2, T3, T4, T5 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, -) G_TUPLE5 { - return A.SequenceT5( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t1, - t2, - t3, - t4, - t5, - ) + G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + T1, T2, T3, T4, T5 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, +) G_TUPLE5 { + return A.SequenceT5( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [T.Tuple5[func() O.Option[T]]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]] func SequenceTuple5[ - G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { - return A.SequenceTuple5( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t) + G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 { + return A.SequenceTuple5( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + t) } // TraverseTuple5 converts a [T.Tuple5[func() O.Option[T]]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]] func TraverseTuple5[ - G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { - return A.TraverseTuple5( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - f1, - f2, - f3, - f4, - f5, - t) - } + G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 { + return A.TraverseTuple5( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], + Ap[func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], + Ap[func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() O.Option[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], + Ap[G_TUPLE5, func() O.Option[func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], + f1, + f2, + f3, + f4, + f5, + t) + } } // SequenceT6 converts 6 [func() O.Option[T]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceT6[ - G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - T1, T2, T3, T4, T5, T6 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, -) G_TUPLE6 { - return A.SequenceT6( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + T1, T2, T3, T4, T5, T6 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, +) G_TUPLE6 { + return A.SequenceT6( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [T.Tuple6[func() O.Option[T]]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func SequenceTuple6[ - G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { - return A.SequenceTuple6( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - t) + G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 { + return A.SequenceTuple6( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + t) } // TraverseTuple6 converts a [T.Tuple6[func() O.Option[T]]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]] func TraverseTuple6[ - G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { - return A.TraverseTuple6( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t) - } + G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 { + return A.TraverseTuple6( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], + Ap[func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], + Ap[func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() O.Option[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], + Ap[G_TUPLE6, func() O.Option[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], + f1, + f2, + f3, + f4, + f5, + f6, + t) + } } // SequenceT7 converts 7 [func() O.Option[T]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceT7[ - G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - T1, T2, T3, T4, T5, T6, T7 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, -) G_TUPLE7 { - return A.SequenceT7( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + T1, T2, T3, T4, T5, T6, T7 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, +) G_TUPLE7 { + return A.SequenceT7( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [T.Tuple7[func() O.Option[T]]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func SequenceTuple7[ - G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { - return A.SequenceTuple7( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - t) + G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 { + return A.SequenceTuple7( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + t) } // TraverseTuple7 converts a [T.Tuple7[func() O.Option[T]]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] func TraverseTuple7[ - G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { - return A.TraverseTuple7( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t) - } + G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 { + return A.TraverseTuple7( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], + Ap[func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], + Ap[func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() O.Option[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], + Ap[G_TUPLE7, func() O.Option[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t) + } } // SequenceT8 converts 8 [func() O.Option[T]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceT8[ - G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - T1, T2, T3, T4, T5, T6, T7, T8 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, -) G_TUPLE8 { - return A.SequenceT8( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + T1, T2, T3, T4, T5, T6, T7, T8 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, +) G_TUPLE8 { + return A.SequenceT8( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [T.Tuple8[func() O.Option[T]]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func SequenceTuple8[ - G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { - return A.SequenceTuple8( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - t) + G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 { + return A.SequenceTuple8( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + t) } // TraverseTuple8 converts a [T.Tuple8[func() O.Option[T]]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] func TraverseTuple8[ - G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { - return A.TraverseTuple8( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t) - } + G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 { + return A.TraverseTuple8( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], + Ap[func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], + Ap[func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() O.Option[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], + Ap[G_TUPLE8, func() O.Option[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t) + } } // SequenceT9 converts 9 [func() O.Option[T]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceT9[ - G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, -) G_TUPLE9 { - return A.SequenceT9( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, +) G_TUPLE9 { + return A.SequenceT9( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [T.Tuple9[func() O.Option[T]]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func SequenceTuple9[ - G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { - return A.SequenceTuple9( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - t) + G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 { + return A.SequenceTuple9( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + t) } // TraverseTuple9 converts a [T.Tuple9[func() O.Option[T]]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] func TraverseTuple9[ - G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { - return A.TraverseTuple9( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], - Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t) - } + G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 { + return A.TraverseTuple9( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6], + Ap[func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], + Ap[func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() O.Option[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], + Ap[G_TUPLE9, func() O.Option[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t) + } } // SequenceT10 converts 10 [func() O.Option[T]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceT10[ - G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - G_T10 ~func() O.Option[T10], - T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( - t1 G_T1, - t2 G_T2, - t3 G_T3, - t4 G_T4, - t5 G_T5, - t6 G_T6, - t7 G_T7, - t8 G_T8, - t9 G_T9, - t10 G_T10, -) G_TUPLE10 { - return A.SequenceT10( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + G_T10 ~func() O.Option[T10], + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( + t1 G_T1, + t2 G_T2, + t3 G_T3, + t4 G_T4, + t5 G_T5, + t6 G_T6, + t7 G_T7, + t8 G_T8, + t9 G_T9, + t10 G_T10, +) G_TUPLE10 { + return A.SequenceT10( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [T.Tuple10[func() O.Option[T]]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func SequenceTuple10[ - G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - G_T10 ~func() O.Option[T10], - T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { - return A.SequenceTuple10( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - t) + G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + G_T10 ~func() O.Option[T10], + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 { + return A.SequenceTuple10( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + t) } // TraverseTuple10 converts a [T.Tuple10[func() O.Option[T]]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] func TraverseTuple10[ - G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - F3 ~func(A3) G_T3, - F4 ~func(A4) G_T4, - F5 ~func(A5) G_T5, - F6 ~func(A6) G_T6, - F7 ~func(A7) G_T7, - F8 ~func(A8) G_T8, - F9 ~func(A9) G_T9, - F10 ~func(A10) G_T10, - G_T1 ~func() O.Option[T1], - G_T2 ~func() O.Option[T2], - G_T3 ~func() O.Option[T3], - G_T4 ~func() O.Option[T4], - G_T5 ~func() O.Option[T5], - G_T6 ~func() O.Option[T6], - G_T7 ~func() O.Option[T7], - G_T8 ~func() O.Option[T8], - G_T9 ~func() O.Option[T9], - G_T10 ~func() O.Option[T10], - A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { - return A.TraverseTuple10( - Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], - Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], - Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], - Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], - Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], - Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], - Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t) - } + G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + F1 ~func(A1) G_T1, + F2 ~func(A2) G_T2, + F3 ~func(A3) G_T3, + F4 ~func(A4) G_T4, + F5 ~func(A5) G_T5, + F6 ~func(A6) G_T6, + F7 ~func(A7) G_T7, + F8 ~func(A8) G_T8, + F9 ~func(A9) G_T9, + F10 ~func(A10) G_T10, + G_T1 ~func() O.Option[T1], + G_T2 ~func() O.Option[T2], + G_T3 ~func() O.Option[T3], + G_T4 ~func() O.Option[T4], + G_T5 ~func() O.Option[T5], + G_T6 ~func() O.Option[T6], + G_T7 ~func() O.Option[T7], + G_T8 ~func() O.Option[T8], + G_T9 ~func() O.Option[T9], + G_T10 ~func() O.Option[T10], + A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 { + return A.TraverseTuple10( + Map[G_T1, func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2], + Ap[func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3], + Ap[func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4], + Ap[func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5], + Ap[func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6], + Ap[func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7], + Ap[func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], + Ap[func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() O.Option[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], + Ap[G_TUPLE10, func() O.Option[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t) + } } diff --git a/monoid/alt.go b/monoid/alt.go new file mode 100644 index 0000000..ada82cf --- /dev/null +++ b/monoid/alt.go @@ -0,0 +1,58 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package monoid + +import ( + S "github.com/IBM/fp-go/semigroup" +) + +func AlternativeMonoid[A, HKTA, HKTFA any]( + fof func(A) HKTA, + + fmap func(HKTA, func(A) func(A) A) HKTFA, + fap func(HKTFA, HKTA) HKTA, + + falt func(HKTA, func() HKTA) HKTA, + + m Monoid[A], + +) Monoid[HKTA] { + + sg := ApplicativeMonoid(fof, fmap, fap, m) + + return MakeMonoid( + func(first, second HKTA) HKTA { + snd := func() HKTA { return second } + + return falt(sg.Concat(first, second), func() HKTA { + return falt(first, snd) + }) + }, + sg.Empty(), + ) +} + +func AltMonoid[HKTA any]( + fzero func() HKTA, + falt func(HKTA, func() HKTA) HKTA, + +) Monoid[HKTA] { + + return MakeMonoid( + S.AltSemigroup(falt).Concat, + fzero(), + ) +} diff --git a/monoid/apply.go b/monoid/apply.go index a4ec21f..738a62e 100644 --- a/monoid/apply.go +++ b/monoid/apply.go @@ -20,15 +20,15 @@ import ( ) func ApplicativeMonoid[A, HKTA, HKTFA any]( - _of func(A) HKTA, - _map func(HKTA, func(A) func(A) A) HKTFA, - _ap func(HKTFA, HKTA) HKTA, + fof func(A) HKTA, + fmap func(HKTA, func(A) func(A) A) HKTFA, + fap func(HKTFA, HKTA) HKTA, m Monoid[A], ) Monoid[HKTA] { return MakeMonoid( - S.ApplySemigroup[A](_map, _ap, m).Concat, - _of(m.Empty()), + S.ApplySemigroup[A](fmap, fap, m).Concat, + fof(m.Empty()), ) } diff --git a/option/apply.go b/option/apply.go index 1e8b0d0..c9ca1fd 100644 --- a/option/apply.go +++ b/option/apply.go @@ -24,6 +24,7 @@ func ApplySemigroup[A any](s S.Semigroup[A]) S.Semigroup[Option[A]] { return S.ApplySemigroup(MonadMap[A, func(A) A], MonadAp[A, A], s) } +// ApplicativeMonoid returns a [Monoid] that concatenates [Option] instances via their applicative func ApplicativeMonoid[A any](m M.Monoid[A]) M.Monoid[Option[A]] { return M.ApplicativeMonoid(Of[A], MonadMap[A, func(A) A], MonadAp[A, A], m) } diff --git a/option/gen.go b/option/gen.go index 5ad4e85..6da476e 100644 --- a/option/gen.go +++ b/option/gen.go @@ -4,11 +4,11 @@ package option - import ( A "github.com/IBM/fp-go/internal/apply" T "github.com/IBM/fp-go/tuple" ) + // optionize converts a nullary function to an option func optionize[R any](f func() (R, bool)) Option[R] { if r, ok := f(); ok { @@ -19,671 +19,671 @@ func optionize[R any](f func() (R, bool)) Option[R] { // Optionize0 converts a function with 0 parameters returning a tuple of a return value R and a boolean into a function with 0 parameters returning an Option[R] func Optionize0[F ~func() (R, bool), R any](f F) func() Option[R] { - return func() Option[R] { - return optionize(func() (R, bool) { - return f() - }) - } + return func() Option[R] { + return optionize(func() (R, bool) { + return f() + }) + } } // Unoptionize0 converts a function with 0 parameters returning a tuple of a return value R and a boolean into a function with 0 parameters returning an Option[R] func Unoptionize0[F ~func() Option[R], R any](f F) func() (R, bool) { - return func() (R, bool) { - return Unwrap(f()) - } + return func() (R, bool) { + return Unwrap(f()) + } } // Optionize1 converts a function with 1 parameters returning a tuple of a return value R and a boolean into a function with 1 parameters returning an Option[R] func Optionize1[F ~func(T0) (R, bool), T0, R any](f F) func(T0) Option[R] { - return func(t0 T0) Option[R] { - return optionize(func() (R, bool) { - return f(t0) - }) - } + return func(t0 T0) Option[R] { + return optionize(func() (R, bool) { + return f(t0) + }) + } } // Unoptionize1 converts a function with 1 parameters returning a tuple of a return value R and a boolean into a function with 1 parameters returning an Option[R] func Unoptionize1[F ~func(T0) Option[R], T0, R any](f F) func(T0) (R, bool) { - return func(t0 T0) (R, bool) { - return Unwrap(f(t0)) - } + return func(t0 T0) (R, bool) { + return Unwrap(f(t0)) + } } // SequenceT1 converts 1 parameters of [Option[T]] into a [Option[Tuple1]]. func SequenceT1[T1 any](t1 Option[T1]) Option[T.Tuple1[T1]] { - return A.SequenceT1( - Map[T1, T.Tuple1[T1]], - t1, - ) + return A.SequenceT1( + Map[T1, T.Tuple1[T1]], + t1, + ) } // SequenceTuple1 converts a [Tuple1] of [Option[T]] into an [Option[Tuple1]]. func SequenceTuple1[T1 any](t T.Tuple1[Option[T1]]) Option[T.Tuple1[T1]] { - return A.SequenceTuple1( - Map[T1, T.Tuple1[T1]], - t, - ) + return A.SequenceTuple1( + Map[T1, T.Tuple1[T1]], + t, + ) } // TraverseTuple1 converts a [Tuple1] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple1]]. -func TraverseTuple1[F1 ~func(A1) Option[T1], A1, T1 any](f1 F1) func (T.Tuple1[A1]) Option[T.Tuple1[T1]] { - return func(t T.Tuple1[A1]) Option[T.Tuple1[T1]] { - return A.TraverseTuple1( - Map[T1, T.Tuple1[T1]], - f1, - t, - ) - } +func TraverseTuple1[F1 ~func(A1) Option[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) Option[T.Tuple1[T1]] { + return func(t T.Tuple1[A1]) Option[T.Tuple1[T1]] { + return A.TraverseTuple1( + Map[T1, T.Tuple1[T1]], + f1, + t, + ) + } } // Optionize2 converts a function with 2 parameters returning a tuple of a return value R and a boolean into a function with 2 parameters returning an Option[R] func Optionize2[F ~func(T0, T1) (R, bool), T0, T1, R any](f F) func(T0, T1) Option[R] { - return func(t0 T0, t1 T1) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1) - }) - } + return func(t0 T0, t1 T1) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1) + }) + } } // Unoptionize2 converts a function with 2 parameters returning a tuple of a return value R and a boolean into a function with 2 parameters returning an Option[R] func Unoptionize2[F ~func(T0, T1) Option[R], T0, T1, R any](f F) func(T0, T1) (R, bool) { - return func(t0 T0, t1 T1) (R, bool) { - return Unwrap(f(t0, t1)) - } + return func(t0 T0, t1 T1) (R, bool) { + return Unwrap(f(t0, t1)) + } } // SequenceT2 converts 2 parameters of [Option[T]] into a [Option[Tuple2]]. func SequenceT2[T1, T2 any](t1 Option[T1], t2 Option[T2]) Option[T.Tuple2[T1, T2]] { - return A.SequenceT2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - t1, - t2, - ) + return A.SequenceT2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + t1, + t2, + ) } // SequenceTuple2 converts a [Tuple2] of [Option[T]] into an [Option[Tuple2]]. func SequenceTuple2[T1, T2 any](t T.Tuple2[Option[T1], Option[T2]]) Option[T.Tuple2[T1, T2]] { - return A.SequenceTuple2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - t, - ) + return A.SequenceTuple2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + t, + ) } // TraverseTuple2 converts a [Tuple2] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple2]]. -func TraverseTuple2[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], A1, T1, A2, T2 any](f1 F1, f2 F2) func (T.Tuple2[A1, A2]) Option[T.Tuple2[T1, T2]] { - return func(t T.Tuple2[A1, A2]) Option[T.Tuple2[T1, T2]] { - return A.TraverseTuple2( - Map[T1, func(T2) T.Tuple2[T1, T2]], - Ap[T.Tuple2[T1, T2], T2], - f1, - f2, - t, - ) - } +func TraverseTuple2[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], A1, T1, A2, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) Option[T.Tuple2[T1, T2]] { + return func(t T.Tuple2[A1, A2]) Option[T.Tuple2[T1, T2]] { + return A.TraverseTuple2( + Map[T1, func(T2) T.Tuple2[T1, T2]], + Ap[T.Tuple2[T1, T2], T2], + f1, + f2, + t, + ) + } } // Optionize3 converts a function with 3 parameters returning a tuple of a return value R and a boolean into a function with 3 parameters returning an Option[R] func Optionize3[F ~func(T0, T1, T2) (R, bool), T0, T1, T2, R any](f F) func(T0, T1, T2) Option[R] { - return func(t0 T0, t1 T1, t2 T2) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2) - }) - } + return func(t0 T0, t1 T1, t2 T2) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2) + }) + } } // Unoptionize3 converts a function with 3 parameters returning a tuple of a return value R and a boolean into a function with 3 parameters returning an Option[R] func Unoptionize3[F ~func(T0, T1, T2) Option[R], T0, T1, T2, R any](f F) func(T0, T1, T2) (R, bool) { - return func(t0 T0, t1 T1, t2 T2) (R, bool) { - return Unwrap(f(t0, t1, t2)) - } + return func(t0 T0, t1 T1, t2 T2) (R, bool) { + return Unwrap(f(t0, t1, t2)) + } } // SequenceT3 converts 3 parameters of [Option[T]] into a [Option[Tuple3]]. func SequenceT3[T1, T2, T3 any](t1 Option[T1], t2 Option[T2], t3 Option[T3]) Option[T.Tuple3[T1, T2, T3]] { - return A.SequenceT3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - t1, - t2, - t3, - ) + return A.SequenceT3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + t1, + t2, + t3, + ) } // SequenceTuple3 converts a [Tuple3] of [Option[T]] into an [Option[Tuple3]]. func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[Option[T1], Option[T2], Option[T3]]) Option[T.Tuple3[T1, T2, T3]] { - return A.SequenceTuple3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - t, - ) + return A.SequenceTuple3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + t, + ) } // TraverseTuple3 converts a [Tuple3] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple3]]. -func TraverseTuple3[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func (T.Tuple3[A1, A2, A3]) Option[T.Tuple3[T1, T2, T3]] { - return func(t T.Tuple3[A1, A2, A3]) Option[T.Tuple3[T1, T2, T3]] { - return A.TraverseTuple3( - Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func(T3) T.Tuple3[T1, T2, T3], T2], - Ap[T.Tuple3[T1, T2, T3], T3], - f1, - f2, - f3, - t, - ) - } +func TraverseTuple3[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) Option[T.Tuple3[T1, T2, T3]] { + return func(t T.Tuple3[A1, A2, A3]) Option[T.Tuple3[T1, T2, T3]] { + return A.TraverseTuple3( + Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], + Ap[func(T3) T.Tuple3[T1, T2, T3], T2], + Ap[T.Tuple3[T1, T2, T3], T3], + f1, + f2, + f3, + t, + ) + } } // Optionize4 converts a function with 4 parameters returning a tuple of a return value R and a boolean into a function with 4 parameters returning an Option[R] func Optionize4[F ~func(T0, T1, T2, T3) (R, bool), T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3) + }) + } } // Unoptionize4 converts a function with 4 parameters returning a tuple of a return value R and a boolean into a function with 4 parameters returning an Option[R] func Unoptionize4[F ~func(T0, T1, T2, T3) Option[R], T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3) (R, bool) { - return Unwrap(f(t0, t1, t2, t3)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) (R, bool) { + return Unwrap(f(t0, t1, t2, t3)) + } } // SequenceT4 converts 4 parameters of [Option[T]] into a [Option[Tuple4]]. func SequenceT4[T1, T2, T3, T4 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4]) Option[T.Tuple4[T1, T2, T3, T4]] { - return A.SequenceT4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - t1, - t2, - t3, - t4, - ) + return A.SequenceT4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + t1, + t2, + t3, + t4, + ) } // SequenceTuple4 converts a [Tuple4] of [Option[T]] into an [Option[Tuple4]]. func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[Option[T1], Option[T2], Option[T3], Option[T4]]) Option[T.Tuple4[T1, T2, T3, T4]] { - return A.SequenceTuple4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - t, - ) + return A.SequenceTuple4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + t, + ) } // TraverseTuple4 converts a [Tuple4] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple4]]. -func TraverseTuple4[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func (T.Tuple4[A1, A2, A3, A4]) Option[T.Tuple4[T1, T2, T3, T4]] { - return func(t T.Tuple4[A1, A2, A3, A4]) Option[T.Tuple4[T1, T2, T3, T4]] { - return A.TraverseTuple4( - Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], - Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], - Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], - Ap[T.Tuple4[T1, T2, T3, T4], T4], - f1, - f2, - f3, - f4, - t, - ) - } +func TraverseTuple4[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) Option[T.Tuple4[T1, T2, T3, T4]] { + return func(t T.Tuple4[A1, A2, A3, A4]) Option[T.Tuple4[T1, T2, T3, T4]] { + return A.TraverseTuple4( + Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2], + Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3], + Ap[T.Tuple4[T1, T2, T3, T4], T4], + f1, + f2, + f3, + f4, + t, + ) + } } // Optionize5 converts a function with 5 parameters returning a tuple of a return value R and a boolean into a function with 5 parameters returning an Option[R] func Optionize5[F ~func(T0, T1, T2, T3, T4) (R, bool), T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4) + }) + } } // Unoptionize5 converts a function with 5 parameters returning a tuple of a return value R and a boolean into a function with 5 parameters returning an Option[R] func Unoptionize5[F ~func(T0, T1, T2, T3, T4) Option[R], T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4)) + } } // SequenceT5 converts 5 parameters of [Option[T]] into a [Option[Tuple5]]. func SequenceT5[T1, T2, T3, T4, T5 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { - return A.SequenceT5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - t1, - t2, - t3, - t4, - t5, - ) + return A.SequenceT5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + t1, + t2, + t3, + t4, + t5, + ) } // SequenceTuple5 converts a [Tuple5] of [Option[T]] into an [Option[Tuple5]]. func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5]]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { - return A.SequenceTuple5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - t, - ) + return A.SequenceTuple5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + t, + ) } // TraverseTuple5 converts a [Tuple5] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple5]]. -func TraverseTuple5[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func (T.Tuple5[A1, A2, A3, A4, A5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { - return func(t T.Tuple5[A1, A2, A3, A4, A5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { - return A.TraverseTuple5( - Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], - Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], - Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], - Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], - Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], - f1, - f2, - f3, - f4, - f5, - t, - ) - } +func TraverseTuple5[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { + return func(t T.Tuple5[A1, A2, A3, A4, A5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] { + return A.TraverseTuple5( + Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2], + Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3], + Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4], + Ap[T.Tuple5[T1, T2, T3, T4, T5], T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // Optionize6 converts a function with 6 parameters returning a tuple of a return value R and a boolean into a function with 6 parameters returning an Option[R] func Optionize6[F ~func(T0, T1, T2, T3, T4, T5) (R, bool), T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4, t5) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4, t5) + }) + } } // Unoptionize6 converts a function with 6 parameters returning a tuple of a return value R and a boolean into a function with 6 parameters returning an Option[R] func Unoptionize6[F ~func(T0, T1, T2, T3, T4, T5) Option[R], T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4, t5)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4, t5)) + } } // SequenceT6 converts 6 parameters of [Option[T]] into a [Option[Tuple6]]. func SequenceT6[T1, T2, T3, T4, T5, T6 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.SequenceT6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - t1, - t2, - t3, - t4, - t5, - t6, - ) + return A.SequenceT6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + t1, + t2, + t3, + t4, + t5, + t6, + ) } // SequenceTuple6 converts a [Tuple6] of [Option[T]] into an [Option[Tuple6]]. func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6]]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.SequenceTuple6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - t, - ) + return A.SequenceTuple6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + t, + ) } // TraverseTuple6 converts a [Tuple6] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple6]]. -func TraverseTuple6[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func (T.Tuple6[A1, A2, A3, A4, A5, A6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { - return A.TraverseTuple6( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], - Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], - Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], - Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], - Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], - Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], - f1, - f2, - f3, - f4, - f5, - f6, - t, - ) - } +func TraverseTuple6[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { + return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] { + return A.TraverseTuple6( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2], + Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3], + Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4], + Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5], + Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // Optionize7 converts a function with 7 parameters returning a tuple of a return value R and a boolean into a function with 7 parameters returning an Option[R] func Optionize7[F ~func(T0, T1, T2, T3, T4, T5, T6) (R, bool), T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4, t5, t6) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4, t5, t6) + }) + } } // Unoptionize7 converts a function with 7 parameters returning a tuple of a return value R and a boolean into a function with 7 parameters returning an Option[R] func Unoptionize7[F ~func(T0, T1, T2, T3, T4, T5, T6) Option[R], T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4, t5, t6)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4, t5, t6)) + } } // SequenceT7 converts 7 parameters of [Option[T]] into a [Option[Tuple7]]. func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.SequenceT7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - ) + return A.SequenceT7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + ) } // SequenceTuple7 converts a [Tuple7] of [Option[T]] into an [Option[Tuple7]]. func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7]]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.SequenceTuple7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - t, - ) + return A.SequenceTuple7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + t, + ) } // TraverseTuple7 converts a [Tuple7] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple7]]. -func TraverseTuple7[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func (T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return A.TraverseTuple7( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], - Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], - Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], - Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], - Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], - Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t, - ) - } +func TraverseTuple7[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return A.TraverseTuple7( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2], + Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3], + Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4], + Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5], + Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6], + Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // Optionize8 converts a function with 8 parameters returning a tuple of a return value R and a boolean into a function with 8 parameters returning an Option[R] func Optionize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) (R, bool), T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4, t5, t6, t7) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4, t5, t6, t7) + }) + } } // Unoptionize8 converts a function with 8 parameters returning a tuple of a return value R and a boolean into a function with 8 parameters returning an Option[R] func Unoptionize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) Option[R], T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7)) + } } // SequenceT8 converts 8 parameters of [Option[T]] into a [Option[Tuple8]]. func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.SequenceT8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - ) + return A.SequenceT8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + ) } // SequenceTuple8 converts a [Tuple8] of [Option[T]] into an [Option[Tuple8]]. func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8]]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.SequenceTuple8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - t, - ) + return A.SequenceTuple8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + t, + ) } // TraverseTuple8 converts a [Tuple8] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple8]]. -func TraverseTuple8[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func (T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return A.TraverseTuple8( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], - Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], - Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], - Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], - Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], - Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - t, - ) - } +func TraverseTuple8[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return A.TraverseTuple8( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3], + Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4], + Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5], + Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6], + Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7], + Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + t, + ) + } } // Optionize9 converts a function with 9 parameters returning a tuple of a return value R and a boolean into a function with 9 parameters returning an Option[R] func Optionize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, bool), T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8) + }) + } } // Unoptionize9 converts a function with 9 parameters returning a tuple of a return value R and a boolean into a function with 9 parameters returning an Option[R] func Unoptionize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Option[R], T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7, t8)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7, t8)) + } } // SequenceT9 converts 9 parameters of [Option[T]] into a [Option[Tuple9]]. func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8], t9 Option[T9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.SequenceT9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - ) + return A.SequenceT9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + ) } // SequenceTuple9 converts a [Tuple9] of [Option[T]] into an [Option[Tuple9]]. func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9]]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.SequenceTuple9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - t, - ) + return A.SequenceTuple9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + t, + ) } // TraverseTuple9 converts a [Tuple9] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple9]]. -func TraverseTuple9[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], F9 ~func(A9) Option[T9], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func (T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return A.TraverseTuple9( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], - Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], - Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], - Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], - Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], - Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - t, - ) - } +func TraverseTuple9[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], F9 ~func(A9) Option[T9], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return A.TraverseTuple9( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4], + Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5], + Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6], + Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7], + Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8], + Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + t, + ) + } } // Optionize10 converts a function with 10 parameters returning a tuple of a return value R and a boolean into a function with 10 parameters returning an Option[R] func Optionize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, bool), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Option[R] { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) Option[R] { - return optionize(func() (R, bool) { - return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) Option[R] { + return optionize(func() (R, bool) { + return f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) + }) + } } // Unoptionize10 converts a function with 10 parameters returning a tuple of a return value R and a boolean into a function with 10 parameters returning an Option[R] func Unoptionize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Option[R], T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, bool) { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, bool) { - return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, bool) { + return Unwrap(f(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) + } } // SequenceT10 converts 10 parameters of [Option[T]] into a [Option[Tuple10]]. func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8], t9 Option[T9], t10 Option[T10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.SequenceT10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - t1, - t2, - t3, - t4, - t5, - t6, - t7, - t8, - t9, - t10, - ) + return A.SequenceT10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + t1, + t2, + t3, + t4, + t5, + t6, + t7, + t8, + t9, + t10, + ) } // SequenceTuple10 converts a [Tuple10] of [Option[T]] into an [Option[Tuple10]]. func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9], Option[T10]]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.SequenceTuple10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - t, - ) + return A.SequenceTuple10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + t, + ) } // TraverseTuple10 converts a [Tuple10] of [A] via transformation functions transforming [A] to [Option[A]] into a [Option[Tuple10]]. -func TraverseTuple10[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], F9 ~func(A9) Option[T9], F10 ~func(A10) Option[T10], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func (T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return A.TraverseTuple10( - Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], - Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], - Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], - Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], - Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], - Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], - Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], - Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], - Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - f8, - f9, - f10, - t, - ) - } +func TraverseTuple10[F1 ~func(A1) Option[T1], F2 ~func(A2) Option[T2], F3 ~func(A3) Option[T3], F4 ~func(A4) Option[T4], F5 ~func(A5) Option[T5], F6 ~func(A6) Option[T6], F7 ~func(A7) Option[T7], F8 ~func(A8) Option[T8], F9 ~func(A9) Option[T9], F10 ~func(A10) Option[T10], A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return A.TraverseTuple10( + Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5], + Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6], + Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7], + Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8], + Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9], + Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + f8, + f9, + f10, + t, + ) + } } diff --git a/reader/gen.go b/reader/gen.go index fbcf999..7418c10 100644 --- a/reader/gen.go +++ b/reader/gen.go @@ -4,73 +4,72 @@ package reader - import ( - G "github.com/IBM/fp-go/reader/generic" + G "github.com/IBM/fp-go/reader/generic" ) // From0 converts a function with 1 parameters returning a [R] into a function with 0 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From0[F ~func(C) R, C, R any](f F) func() Reader[C, R] { - return G.From0[Reader[C, R]](f) + return G.From0[Reader[C, R]](f) } // From1 converts a function with 2 parameters returning a [R] into a function with 1 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From1[F ~func(C, T0) R, T0, C, R any](f F) func(T0) Reader[C, R] { - return G.From1[Reader[C, R]](f) + return G.From1[Reader[C, R]](f) } // From2 converts a function with 3 parameters returning a [R] into a function with 2 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From2[F ~func(C, T0, T1) R, T0, T1, C, R any](f F) func(T0, T1) Reader[C, R] { - return G.From2[Reader[C, R]](f) + return G.From2[Reader[C, R]](f) } // From3 converts a function with 4 parameters returning a [R] into a function with 3 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From3[F ~func(C, T0, T1, T2) R, T0, T1, T2, C, R any](f F) func(T0, T1, T2) Reader[C, R] { - return G.From3[Reader[C, R]](f) + return G.From3[Reader[C, R]](f) } // From4 converts a function with 5 parameters returning a [R] into a function with 4 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From4[F ~func(C, T0, T1, T2, T3) R, T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) Reader[C, R] { - return G.From4[Reader[C, R]](f) + return G.From4[Reader[C, R]](f) } // From5 converts a function with 6 parameters returning a [R] into a function with 5 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From5[F ~func(C, T0, T1, T2, T3, T4) R, T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) Reader[C, R] { - return G.From5[Reader[C, R]](f) + return G.From5[Reader[C, R]](f) } // From6 converts a function with 7 parameters returning a [R] into a function with 6 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From6[F ~func(C, T0, T1, T2, T3, T4, T5) R, T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) Reader[C, R] { - return G.From6[Reader[C, R]](f) + return G.From6[Reader[C, R]](f) } // From7 converts a function with 8 parameters returning a [R] into a function with 7 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From7[F ~func(C, T0, T1, T2, T3, T4, T5, T6) R, T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) Reader[C, R] { - return G.From7[Reader[C, R]](f) + return G.From7[Reader[C, R]](f) } // From8 converts a function with 9 parameters returning a [R] into a function with 8 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From8[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) R, T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) Reader[C, R] { - return G.From8[Reader[C, R]](f) + return G.From8[Reader[C, R]](f) } // From9 converts a function with 10 parameters returning a [R] into a function with 9 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From9[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) R, T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Reader[C, R] { - return G.From9[Reader[C, R]](f) + return G.From9[Reader[C, R]](f) } // From10 converts a function with 11 parameters returning a [R] into a function with 10 parameters returning a [Reader[C, R]] // The first parameter is considered to be the context [C] of the reader func From10[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Reader[C, R] { - return G.From10[Reader[C, R]](f) + return G.From10[Reader[C, R]](f) } diff --git a/reader/generic/gen.go b/reader/generic/gen.go index eb1f698..45d4ce4 100644 --- a/reader/generic/gen.go +++ b/reader/generic/gen.go @@ -3,113 +3,112 @@ // 2023-09-12 13:44:36.166526 +0200 CEST m=+0.011001401 package generic - // From0 converts a function with 1 parameters returning a [R] into a function with 0 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From0[GRA ~func(C) R, F ~func(C) R, C, R any](f F) func() GRA { - return func() GRA { - return MakeReader[GRA](func(r C) R { - return f(r) - }) - } + return func() GRA { + return MakeReader[GRA](func(r C) R { + return f(r) + }) + } } // From1 converts a function with 2 parameters returning a [R] into a function with 1 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From1[GRA ~func(C) R, F ~func(C, T0) R, T0, C, R any](f F) func(T0) GRA { - return func(t0 T0) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0) - }) - } + return func(t0 T0) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0) + }) + } } // From2 converts a function with 3 parameters returning a [R] into a function with 2 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From2[GRA ~func(C) R, F ~func(C, T0, T1) R, T0, T1, C, R any](f F) func(T0, T1) GRA { - return func(t0 T0, t1 T1) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1) - }) - } + return func(t0 T0, t1 T1) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1) + }) + } } // From3 converts a function with 4 parameters returning a [R] into a function with 3 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From3[GRA ~func(C) R, F ~func(C, T0, T1, T2) R, T0, T1, T2, C, R any](f F) func(T0, T1, T2) GRA { - return func(t0 T0, t1 T1, t2 T2) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2) - }) - } + return func(t0 T0, t1 T1, t2 T2) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2) + }) + } } // From4 converts a function with 5 parameters returning a [R] into a function with 4 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From4[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3) R, T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3) + }) + } } // From5 converts a function with 6 parameters returning a [R] into a function with 5 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From5[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4) R, T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4) + }) + } } // From6 converts a function with 7 parameters returning a [R] into a function with 6 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From6[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4, T5) R, T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4, t5) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4, t5) + }) + } } // From7 converts a function with 8 parameters returning a [R] into a function with 7 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From7[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4, T5, T6) R, T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4, t5, t6) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4, t5, t6) + }) + } } // From8 converts a function with 9 parameters returning a [R] into a function with 8 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From8[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) R, T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7) + }) + } } // From9 converts a function with 10 parameters returning a [R] into a function with 9 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From9[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) R, T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8) + }) + } } // From10 converts a function with 11 parameters returning a [R] into a function with 10 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func From10[GRA ~func(C) R, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) R, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) GRA { - return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GRA { - return MakeReader[GRA](func(r C) R { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) - }) - } + return func(t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GRA { + return MakeReader[GRA](func(r C) R { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) + }) + } } diff --git a/readerioeither/gen.go b/readerioeither/gen.go index 7a3a34a..6351c4f 100644 --- a/readerioeither/gen.go +++ b/readerioeither/gen.go @@ -4,139 +4,138 @@ package readerioeither - import ( - G "github.com/IBM/fp-go/readerioeither/generic" + G "github.com/IBM/fp-go/readerioeither/generic" ) // From0 converts a function with 1 parameters returning a tuple into a function with 0 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From0[F ~func(C) func() (R, error), C, R any](f F) func() ReaderIOEither[C, error, R] { - return G.From0[ReaderIOEither[C, error, R]](f) + return G.From0[ReaderIOEither[C, error, R]](f) } // Eitherize0 converts a function with 1 parameters returning a tuple into a function with 0 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize0[F ~func(C) (R, error), C, R any](f F) func() ReaderIOEither[C, error, R] { - return G.Eitherize0[ReaderIOEither[C, error, R]](f) + return G.Eitherize0[ReaderIOEither[C, error, R]](f) } // From1 converts a function with 2 parameters returning a tuple into a function with 1 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From1[F ~func(C, T0) func() (R, error), T0, C, R any](f F) func(T0) ReaderIOEither[C, error, R] { - return G.From1[ReaderIOEither[C, error, R]](f) + return G.From1[ReaderIOEither[C, error, R]](f) } // Eitherize1 converts a function with 2 parameters returning a tuple into a function with 1 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize1[F ~func(C, T0) (R, error), T0, C, R any](f F) func(T0) ReaderIOEither[C, error, R] { - return G.Eitherize1[ReaderIOEither[C, error, R]](f) + return G.Eitherize1[ReaderIOEither[C, error, R]](f) } // From2 converts a function with 3 parameters returning a tuple into a function with 2 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From2[F ~func(C, T0, T1) func() (R, error), T0, T1, C, R any](f F) func(T0, T1) ReaderIOEither[C, error, R] { - return G.From2[ReaderIOEither[C, error, R]](f) + return G.From2[ReaderIOEither[C, error, R]](f) } // Eitherize2 converts a function with 3 parameters returning a tuple into a function with 2 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize2[F ~func(C, T0, T1) (R, error), T0, T1, C, R any](f F) func(T0, T1) ReaderIOEither[C, error, R] { - return G.Eitherize2[ReaderIOEither[C, error, R]](f) + return G.Eitherize2[ReaderIOEither[C, error, R]](f) } // From3 converts a function with 4 parameters returning a tuple into a function with 3 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From3[F ~func(C, T0, T1, T2) func() (R, error), T0, T1, T2, C, R any](f F) func(T0, T1, T2) ReaderIOEither[C, error, R] { - return G.From3[ReaderIOEither[C, error, R]](f) + return G.From3[ReaderIOEither[C, error, R]](f) } // Eitherize3 converts a function with 4 parameters returning a tuple into a function with 3 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize3[F ~func(C, T0, T1, T2) (R, error), T0, T1, T2, C, R any](f F) func(T0, T1, T2) ReaderIOEither[C, error, R] { - return G.Eitherize3[ReaderIOEither[C, error, R]](f) + return G.Eitherize3[ReaderIOEither[C, error, R]](f) } // From4 converts a function with 5 parameters returning a tuple into a function with 4 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From4[F ~func(C, T0, T1, T2, T3) func() (R, error), T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) ReaderIOEither[C, error, R] { - return G.From4[ReaderIOEither[C, error, R]](f) + return G.From4[ReaderIOEither[C, error, R]](f) } // Eitherize4 converts a function with 5 parameters returning a tuple into a function with 4 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize4[F ~func(C, T0, T1, T2, T3) (R, error), T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) ReaderIOEither[C, error, R] { - return G.Eitherize4[ReaderIOEither[C, error, R]](f) + return G.Eitherize4[ReaderIOEither[C, error, R]](f) } // From5 converts a function with 6 parameters returning a tuple into a function with 5 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From5[F ~func(C, T0, T1, T2, T3, T4) func() (R, error), T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) ReaderIOEither[C, error, R] { - return G.From5[ReaderIOEither[C, error, R]](f) + return G.From5[ReaderIOEither[C, error, R]](f) } // Eitherize5 converts a function with 6 parameters returning a tuple into a function with 5 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize5[F ~func(C, T0, T1, T2, T3, T4) (R, error), T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) ReaderIOEither[C, error, R] { - return G.Eitherize5[ReaderIOEither[C, error, R]](f) + return G.Eitherize5[ReaderIOEither[C, error, R]](f) } // From6 converts a function with 7 parameters returning a tuple into a function with 6 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From6[F ~func(C, T0, T1, T2, T3, T4, T5) func() (R, error), T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) ReaderIOEither[C, error, R] { - return G.From6[ReaderIOEither[C, error, R]](f) + return G.From6[ReaderIOEither[C, error, R]](f) } // Eitherize6 converts a function with 7 parameters returning a tuple into a function with 6 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize6[F ~func(C, T0, T1, T2, T3, T4, T5) (R, error), T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) ReaderIOEither[C, error, R] { - return G.Eitherize6[ReaderIOEither[C, error, R]](f) + return G.Eitherize6[ReaderIOEither[C, error, R]](f) } // From7 converts a function with 8 parameters returning a tuple into a function with 7 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From7[F ~func(C, T0, T1, T2, T3, T4, T5, T6) func() (R, error), T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) ReaderIOEither[C, error, R] { - return G.From7[ReaderIOEither[C, error, R]](f) + return G.From7[ReaderIOEither[C, error, R]](f) } // Eitherize7 converts a function with 8 parameters returning a tuple into a function with 7 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize7[F ~func(C, T0, T1, T2, T3, T4, T5, T6) (R, error), T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) ReaderIOEither[C, error, R] { - return G.Eitherize7[ReaderIOEither[C, error, R]](f) + return G.Eitherize7[ReaderIOEither[C, error, R]](f) } // From8 converts a function with 9 parameters returning a tuple into a function with 8 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From8[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) func() (R, error), T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) ReaderIOEither[C, error, R] { - return G.From8[ReaderIOEither[C, error, R]](f) + return G.From8[ReaderIOEither[C, error, R]](f) } // Eitherize8 converts a function with 9 parameters returning a tuple into a function with 8 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize8[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) ReaderIOEither[C, error, R] { - return G.Eitherize8[ReaderIOEither[C, error, R]](f) + return G.Eitherize8[ReaderIOEither[C, error, R]](f) } // From9 converts a function with 10 parameters returning a tuple into a function with 9 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From9[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) func() (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) ReaderIOEither[C, error, R] { - return G.From9[ReaderIOEither[C, error, R]](f) + return G.From9[ReaderIOEither[C, error, R]](f) } // Eitherize9 converts a function with 10 parameters returning a tuple into a function with 9 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize9[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) ReaderIOEither[C, error, R] { - return G.Eitherize9[ReaderIOEither[C, error, R]](f) + return G.Eitherize9[ReaderIOEither[C, error, R]](f) } // From10 converts a function with 11 parameters returning a tuple into a function with 10 parameters returning a [ReaderIOEither[R]] // The first parameter is considered to be the context [C]. func From10[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) func() (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) ReaderIOEither[C, error, R] { - return G.From10[ReaderIOEither[C, error, R]](f) + return G.From10[ReaderIOEither[C, error, R]](f) } // Eitherize10 converts a function with 11 parameters returning a tuple into a function with 10 parameters returning a [ReaderIOEither[C, error, R]] // The first parameter is considered to be the context [C]. func Eitherize10[F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) ReaderIOEither[C, error, R] { - return G.Eitherize10[ReaderIOEither[C, error, R]](f) + return G.Eitherize10[ReaderIOEither[C, error, R]](f) } diff --git a/readerioeither/generic/gen.go b/readerioeither/generic/gen.go index 0e04470..3fcdeae 100644 --- a/readerioeither/generic/gen.go +++ b/readerioeither/generic/gen.go @@ -3,7 +3,6 @@ // 2023-09-12 13:44:37.5566477 +0200 CEST m=+0.009011201 package generic - import ( E "github.com/IBM/fp-go/either" RD "github.com/IBM/fp-go/reader/generic" @@ -12,186 +11,197 @@ import ( // From0 converts a function with 1 parameters returning a tuple into a function with 0 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From0[GRA ~func(C) GIOA, F ~func(C) func() (R, error), GIOA ~func() E.Either[error, R], C, R any](f F) func() GRA { - return RD.From0[GRA](func(r C) GIOA { - return E.Eitherize0(f(r)) - }) + return RD.From0[GRA](func(r C) GIOA { + return E.Eitherize0(f(r)) + }) } // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize0[GRA ~func(C) GIOA, F ~func(C) (R, error), GIOA ~func() E.Either[error, R], C, R any](f F) func() GRA { - return From0[GRA](func(r C) func() (R, error) { - return func() (R, error) { - return f(r) - }}) + return From0[GRA](func(r C) func() (R, error) { + return func() (R, error) { + return f(r) + } + }) } // From1 converts a function with 2 parameters returning a tuple into a function with 1 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From1[GRA ~func(C) GIOA, F ~func(C, T0) func() (R, error), GIOA ~func() E.Either[error, R], T0, C, R any](f F) func(T0) GRA { - return RD.From1[GRA](func(r C, t0 T0) GIOA { - return E.Eitherize0(f(r, t0)) - }) + return RD.From1[GRA](func(r C, t0 T0) GIOA { + return E.Eitherize0(f(r, t0)) + }) } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize1[GRA ~func(C) GIOA, F ~func(C, T0) (R, error), GIOA ~func() E.Either[error, R], T0, C, R any](f F) func(T0) GRA { - return From1[GRA](func(r C, t0 T0) func() (R, error) { - return func() (R, error) { - return f(r, t0) - }}) + return From1[GRA](func(r C, t0 T0) func() (R, error) { + return func() (R, error) { + return f(r, t0) + } + }) } // From2 converts a function with 3 parameters returning a tuple into a function with 2 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From2[GRA ~func(C) GIOA, F ~func(C, T0, T1) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, C, R any](f F) func(T0, T1) GRA { - return RD.From2[GRA](func(r C, t0 T0, t1 T1) GIOA { - return E.Eitherize0(f(r, t0, t1)) - }) + return RD.From2[GRA](func(r C, t0 T0, t1 T1) GIOA { + return E.Eitherize0(f(r, t0, t1)) + }) } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize2[GRA ~func(C) GIOA, F ~func(C, T0, T1) (R, error), GIOA ~func() E.Either[error, R], T0, T1, C, R any](f F) func(T0, T1) GRA { - return From2[GRA](func(r C, t0 T0, t1 T1) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1) - }}) + return From2[GRA](func(r C, t0 T0, t1 T1) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1) + } + }) } // From3 converts a function with 4 parameters returning a tuple into a function with 3 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From3[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, C, R any](f F) func(T0, T1, T2) GRA { - return RD.From3[GRA](func(r C, t0 T0, t1 T1, t2 T2) GIOA { - return E.Eitherize0(f(r, t0, t1, t2)) - }) + return RD.From3[GRA](func(r C, t0 T0, t1 T1, t2 T2) GIOA { + return E.Eitherize0(f(r, t0, t1, t2)) + }) } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize3[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, C, R any](f F) func(T0, T1, T2) GRA { - return From3[GRA](func(r C, t0 T0, t1 T1, t2 T2) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2) - }}) + return From3[GRA](func(r C, t0 T0, t1 T1, t2 T2) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2) + } + }) } // From4 converts a function with 5 parameters returning a tuple into a function with 4 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From4[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) GRA { - return RD.From4[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3)) - }) + return RD.From4[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3)) + }) } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize4[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, C, R any](f F) func(T0, T1, T2, T3) GRA { - return From4[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3) - }}) + return From4[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3) + } + }) } // From5 converts a function with 6 parameters returning a tuple into a function with 5 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From5[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) GRA { - return RD.From5[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4)) - }) + return RD.From5[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4)) + }) } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize5[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, C, R any](f F) func(T0, T1, T2, T3, T4) GRA { - return From5[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4) - }}) + return From5[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4) + } + }) } // From6 converts a function with 7 parameters returning a tuple into a function with 6 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From6[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) GRA { - return RD.From6[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5)) - }) + return RD.From6[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5)) + }) } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize6[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, C, R any](f F) func(T0, T1, T2, T3, T4, T5) GRA { - return From6[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4, t5) - }}) + return From6[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4, t5) + } + }) } // From7 converts a function with 8 parameters returning a tuple into a function with 7 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From7[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) GRA { - return RD.From7[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6)) - }) + return RD.From7[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6)) + }) } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize7[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) GRA { - return From7[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4, t5, t6) - }}) + return From7[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4, t5, t6) + } + }) } // From8 converts a function with 9 parameters returning a tuple into a function with 8 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From8[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) GRA { - return RD.From8[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7)) - }) + return RD.From8[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7)) + }) } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize8[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) GRA { - return From8[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7) - }}) + return From8[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7) + } + }) } // From9 converts a function with 10 parameters returning a tuple into a function with 9 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From9[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) GRA { - return RD.From9[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8)) - }) + return RD.From9[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8)) + }) } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize9[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) GRA { - return From9[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8) - }}) + return From9[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8) + } + }) } // From10 converts a function with 11 parameters returning a tuple into a function with 10 parameters returning a [GRA] // The first parameter is considerd to be the context [C]. func From10[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) func() (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) GRA { - return RD.From10[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA { - return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) - }) + return RD.From10[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA { + return E.Eitherize0(f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)) + }) } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GRA] // The first parameter is considered to be the context [C]. func Eitherize10[GRA ~func(C) GIOA, F ~func(C, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), GIOA ~func() E.Either[error, R], T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, C, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) GRA { - return From10[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) func() (R, error) { - return func() (R, error) { - return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) - }}) + return From10[GRA](func(r C, t0 T0, t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) func() (R, error) { + return func() (R, error) { + return f(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) + } + }) } diff --git a/readerioeither/generic/reader.go b/readerioeither/generic/reader.go index ad0d6a4..2adc700 100644 --- a/readerioeither/generic/reader.go +++ b/readerioeither/generic/reader.go @@ -35,6 +35,20 @@ func MakeReader[GEA ~func(R) GIOA, GIOA ~func() ET.Either[E, A], R, E, A any](f return f } +func MonadAlt[LAZY ~func() GEA, GEA ~func(R) GIOA, GIOA ~func() ET.Either[E, A], R, E, A any](first GEA, second LAZY) GEA { + return eithert.MonadAlt( + G.Of[GEA], + G.MonadChain[GEA, GEA], + + first, + second, + ) +} + +func Alt[LAZY ~func() GEA, GEA ~func(R) GIOA, GIOA ~func() ET.Either[E, A], R, E, A any](second LAZY) func(GEA) GEA { + return F.Bind2nd(MonadAlt[LAZY], second) +} + func MonadMap[GEA ~func(R) GIOA, GEB ~func(R) GIOB, GIOA ~func() ET.Either[E, A], GIOB ~func() ET.Either[E, B], R, E, A, B any](fa GEA, f func(A) B) GEB { return eithert.MonadMap(G.MonadMap[GEA, GEB, GIOA, GIOB, R, ET.Either[E, A], ET.Either[E, B]], fa, f) } diff --git a/readerioeither/reader.go b/readerioeither/reader.go index 8404a47..7cdec44 100644 --- a/readerioeither/reader.go +++ b/readerioeither/reader.go @@ -19,6 +19,7 @@ import ( ET "github.com/IBM/fp-go/either" "github.com/IBM/fp-go/io" IOE "github.com/IBM/fp-go/ioeither" + L "github.com/IBM/fp-go/lazy" O "github.com/IBM/fp-go/option" RD "github.com/IBM/fp-go/reader" RE "github.com/IBM/fp-go/readereither" @@ -245,7 +246,7 @@ func Swap[R, E, A any](val ReaderIOEither[R, E, A]) ReaderIOEither[R, A, E] { } // Defer creates an IO by creating a brand new IO via a generator function, each time -func Defer[R, E, A any](gen func() ReaderIOEither[R, E, A]) ReaderIOEither[R, E, A] { +func Defer[R, E, A any](gen L.Lazy[ReaderIOEither[R, E, A]]) ReaderIOEither[R, E, A] { return G.Defer[ReaderIOEither[R, E, A]](gen) } @@ -253,3 +254,13 @@ func Defer[R, E, A any](gen func() ReaderIOEither[R, E, A]) ReaderIOEither[R, E, func TryCatch[R, E, A any](f func(R) func() (A, error), onThrow func(error) E) ReaderIOEither[R, E, A] { return G.TryCatch[ReaderIOEither[R, E, A]](f, onThrow) } + +// MonadAlt identifies an associative operation on a type constructor. +func MonadAlt[R, E, A any](first ReaderIOEither[R, E, A], second L.Lazy[ReaderIOEither[R, E, A]]) ReaderIOEither[R, E, A] { + return G.MonadAlt(first, second) +} + +// Alt identifies an associative operation on a type constructor. +func Alt[R, E, A any](second L.Lazy[ReaderIOEither[R, E, A]]) func(ReaderIOEither[R, E, A]) ReaderIOEither[R, E, A] { + return G.Alt(second) +} diff --git a/semigroup/alt.go b/semigroup/alt.go new file mode 100644 index 0000000..17b95d9 --- /dev/null +++ b/semigroup/alt.go @@ -0,0 +1,28 @@ +// Copyright (c) 2023 IBM Corp. +// All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package semigroup + +func AltSemigroup[HKTA any]( + falt func(HKTA, func() HKTA) HKTA, + +) Semigroup[HKTA] { + + return MakeSemigroup( + func(first, second HKTA) HKTA { + return falt(first, func() HKTA { return second }) + }, + ) +} diff --git a/semigroup/apply.go b/semigroup/apply.go index 4fd72c4..6dd560e 100644 --- a/semigroup/apply.go +++ b/semigroup/apply.go @@ -25,14 +25,14 @@ HKTA = HKT HKTFA = HKT */ func ApplySemigroup[A, HKTA, HKTFA any]( - _map func(HKTA, func(A) func(A) A) HKTFA, - _ap func(HKTFA, HKTA) HKTA, + fmap func(HKTA, func(A) func(A) A) HKTFA, + fap func(HKTFA, HKTA) HKTA, s Semigroup[A], ) Semigroup[HKTA] { cb := F.Curry2(s.Concat) return MakeSemigroup(func(first HKTA, second HKTA) HKTA { - return _ap(_map(first, cb), second) + return fap(fmap(first, cb), second) }) } diff --git a/test.bat b/test.bat new file mode 100644 index 0000000..a5d0f54 --- /dev/null +++ b/test.bat @@ -0,0 +1,3 @@ +@echo off +mkdir build 2> NUL +gotip test .\... && go1.20.1 test .\... && go test -v -coverprofile build/cover.out -coverpkg=./... -covermode=atomic .\... \ No newline at end of file diff --git a/tuple/gen.go b/tuple/gen.go index 6996865..6c56bce 100644 --- a/tuple/gen.go +++ b/tuple/gen.go @@ -4,1368 +4,1652 @@ package tuple - import ( - "fmt" "encoding/json" + "fmt" M "github.com/IBM/fp-go/monoid" - O "github.com/IBM/fp-go/ord" + O "github.com/IBM/fp-go/ord" ) // Tuple1 is a struct that carries 1 independently typed values type Tuple1[T1 any] struct { - F1 T1 + F1 T1 } // Tuple2 is a struct that carries 2 independently typed values type Tuple2[T1, T2 any] struct { - F1 T1 - F2 T2 + F1 T1 + F2 T2 } // Tuple3 is a struct that carries 3 independently typed values type Tuple3[T1, T2, T3 any] struct { - F1 T1 - F2 T2 - F3 T3 + F1 T1 + F2 T2 + F3 T3 } // Tuple4 is a struct that carries 4 independently typed values type Tuple4[T1, T2, T3, T4 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 + F1 T1 + F2 T2 + F3 T3 + F4 T4 } // Tuple5 is a struct that carries 5 independently typed values type Tuple5[T1, T2, T3, T4, T5 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 } // Tuple6 is a struct that carries 6 independently typed values type Tuple6[T1, T2, T3, T4, T5, T6 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 - F6 T6 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 + F6 T6 } // Tuple7 is a struct that carries 7 independently typed values type Tuple7[T1, T2, T3, T4, T5, T6, T7 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 - F6 T6 - F7 T7 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 + F6 T6 + F7 T7 } // Tuple8 is a struct that carries 8 independently typed values type Tuple8[T1, T2, T3, T4, T5, T6, T7, T8 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 - F6 T6 - F7 T7 - F8 T8 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 + F6 T6 + F7 T7 + F8 T8 } // Tuple9 is a struct that carries 9 independently typed values type Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 - F6 T6 - F7 T7 - F8 T8 - F9 T9 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 + F6 T6 + F7 T7 + F8 T8 + F9 T9 } // Tuple10 is a struct that carries 10 independently typed values type Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any] struct { - F1 T1 - F2 T2 - F3 T3 - F4 T4 - F5 T5 - F6 T6 - F7 T7 - F8 T8 - F9 T9 - F10 T10 + F1 T1 + F2 T2 + F3 T3 + F4 T4 + F5 T5 + F6 T6 + F7 T7 + F8 T8 + F9 T9 + F10 T10 } // MakeTuple1 is a function that converts its 1 parameters into a [Tuple1] func MakeTuple1[T1 any](t1 T1) Tuple1[T1] { - return Tuple1[T1]{t1} + return Tuple1[T1]{t1} } // Tupled1 converts a function with 1 parameters returning into a function taking a Tuple1 // The inverse function is [Untupled1] func Tupled1[F ~func(T1) R, T1, R any](f F) func(Tuple1[T1]) R { - return func(t Tuple1[T1]) R { - return f(t.F1) - } + return func(t Tuple1[T1]) R { + return f(t.F1) + } } // Untupled1 converts a function with a [Tuple1] parameter into a function with 1 parameters // The inverse function is [Tupled1] func Untupled1[F ~func(Tuple1[T1]) R, T1, R any](f F) func(T1) R { - return func(t1 T1) R { - return f(MakeTuple1(t1)) - } + return func(t1 T1) R { + return f(MakeTuple1(t1)) + } } // Monoid1 creates a [Monoid] for a [Tuple1] based on 1 monoids for the contained types func Monoid1[T1 any](m1 M.Monoid[T1]) M.Monoid[Tuple1[T1]] { - return M.MakeMonoid(func(l, r Tuple1[T1]) Tuple1[T1]{ - return MakeTuple1(m1.Concat(l.F1, r.F1)) - }, MakeTuple1(m1.Empty())) + return M.MakeMonoid(func(l, r Tuple1[T1]) Tuple1[T1] { + return MakeTuple1(m1.Concat(l.F1, r.F1)) + }, MakeTuple1(m1.Empty())) } // Ord1 creates n [Ord] for a [Tuple1] based on 1 [Ord]s for the contained types func Ord1[T1 any](o1 O.Ord[T1]) O.Ord[Tuple1[T1]] { - return O.MakeOrd(func(l, r Tuple1[T1]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - return 0 - }, func(l, r Tuple1[T1]) bool { - return o1.Equals(l.F1, r.F1) - }) + return O.MakeOrd(func(l, r Tuple1[T1]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + return 0 + }, func(l, r Tuple1[T1]) bool { + return o1.Equals(l.F1, r.F1) + }) } // Map1 maps each value of a [Tuple1] via a mapping function func Map1[F1 ~func(T1) R1, T1, R1 any](f1 F1) func(Tuple1[T1]) Tuple1[R1] { - return func(t Tuple1[T1]) Tuple1[R1] { - return MakeTuple1( - f1(t.F1), - ) - } + return func(t Tuple1[T1]) Tuple1[R1] { + return MakeTuple1( + f1(t.F1), + ) + } } // Replicate1 creates a [Tuple1] with all fields set to the input value `t` func Replicate1[T any](t T) Tuple1[T] { - return MakeTuple1(t) + return MakeTuple1(t) } // String prints some debug info for the [Tuple1] func (t Tuple1[T1]) String() string { - return fmt.Sprintf("Tuple1[%T](%v)", t.F1, t.F1) + return fmt.Sprintf("Tuple1[%T](%v)", t.F1, t.F1) } // MarshalJSON marshals the [Tuple1] into a JSON array func (t Tuple1[T1]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1}) + return json.Marshal([]any{t.F1}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple1] func (t *Tuple1[T1]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - } - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + } + return nil } // ToArray converts the [Tuple1] into an array of type [R] using 1 transformation functions from [T] to [R] // The inverse function is [FromArray1] func ToArray1[F1 ~func(T1) R, T1, R any](f1 F1) func(t Tuple1[T1]) []R { - return func(t Tuple1[T1]) []R { - return []R{ - f1(t.F1), - } - } + return func(t Tuple1[T1]) []R { + return []R{ + f1(t.F1), + } + } } // FromArray converts an array of [R] into a [Tuple1] using 1 functions from [R] to [T] // The inverse function is [ToArray1] func FromArray1[F1 ~func(R) T1, T1, R any](f1 F1) func(r []R) Tuple1[T1] { - return func(r []R) Tuple1[T1] { - return MakeTuple1( - f1(r[0]), - ) - } + return func(r []R) Tuple1[T1] { + return MakeTuple1( + f1(r[0]), + ) + } } // Push1 creates a [Tuple2] from a [Tuple1] by appending a constant value func Push1[T1, T2 any](value T2) func(Tuple1[T1]) Tuple2[T1, T2] { - return func(t Tuple1[T1]) Tuple2[T1, T2] { - return MakeTuple2(t.F1, value) - } + return func(t Tuple1[T1]) Tuple2[T1, T2] { + return MakeTuple2(t.F1, value) + } } // MakeTuple2 is a function that converts its 2 parameters into a [Tuple2] func MakeTuple2[T1, T2 any](t1 T1, t2 T2) Tuple2[T1, T2] { - return Tuple2[T1, T2]{t1, t2} + return Tuple2[T1, T2]{t1, t2} } // Tupled2 converts a function with 2 parameters returning into a function taking a Tuple2 // The inverse function is [Untupled2] func Tupled2[F ~func(T1, T2) R, T1, T2, R any](f F) func(Tuple2[T1, T2]) R { - return func(t Tuple2[T1, T2]) R { - return f(t.F1, t.F2) - } + return func(t Tuple2[T1, T2]) R { + return f(t.F1, t.F2) + } } // Untupled2 converts a function with a [Tuple2] parameter into a function with 2 parameters // The inverse function is [Tupled2] func Untupled2[F ~func(Tuple2[T1, T2]) R, T1, T2, R any](f F) func(T1, T2) R { - return func(t1 T1, t2 T2) R { - return f(MakeTuple2(t1, t2)) - } + return func(t1 T1, t2 T2) R { + return f(MakeTuple2(t1, t2)) + } } // Monoid2 creates a [Monoid] for a [Tuple2] based on 2 monoids for the contained types func Monoid2[T1, T2 any](m1 M.Monoid[T1], m2 M.Monoid[T2]) M.Monoid[Tuple2[T1, T2]] { - return M.MakeMonoid(func(l, r Tuple2[T1, T2]) Tuple2[T1, T2]{ - return MakeTuple2(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2)) - }, MakeTuple2(m1.Empty(), m2.Empty())) + return M.MakeMonoid(func(l, r Tuple2[T1, T2]) Tuple2[T1, T2] { + return MakeTuple2(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2)) + }, MakeTuple2(m1.Empty(), m2.Empty())) } // Ord2 creates n [Ord] for a [Tuple2] based on 2 [Ord]s for the contained types func Ord2[T1, T2 any](o1 O.Ord[T1], o2 O.Ord[T2]) O.Ord[Tuple2[T1, T2]] { - return O.MakeOrd(func(l, r Tuple2[T1, T2]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - return 0 - }, func(l, r Tuple2[T1, T2]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) - }) + return O.MakeOrd(func(l, r Tuple2[T1, T2]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + return 0 + }, func(l, r Tuple2[T1, T2]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) + }) } // Map2 maps each value of a [Tuple2] via a mapping function func Map2[F1 ~func(T1) R1, F2 ~func(T2) R2, T1, R1, T2, R2 any](f1 F1, f2 F2) func(Tuple2[T1, T2]) Tuple2[R1, R2] { - return func(t Tuple2[T1, T2]) Tuple2[R1, R2] { - return MakeTuple2( - f1(t.F1), - f2(t.F2), - ) - } + return func(t Tuple2[T1, T2]) Tuple2[R1, R2] { + return MakeTuple2( + f1(t.F1), + f2(t.F2), + ) + } } // Replicate2 creates a [Tuple2] with all fields set to the input value `t` func Replicate2[T any](t T) Tuple2[T, T] { - return MakeTuple2(t, t) + return MakeTuple2(t, t) } // String prints some debug info for the [Tuple2] func (t Tuple2[T1, T2]) String() string { - return fmt.Sprintf("Tuple2[%T, %T](%v, %v)", t.F1, t.F2, t.F1, t.F2) + return fmt.Sprintf("Tuple2[%T, %T](%v, %v)", t.F1, t.F2, t.F1, t.F2) } // MarshalJSON marshals the [Tuple2] into a JSON array func (t Tuple2[T1, T2]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2}) + return json.Marshal([]any{t.F1, t.F2}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple2] func (t *Tuple2[T1, T2]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - }} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + } + } + return nil } // ToArray converts the [Tuple2] into an array of type [R] using 2 transformation functions from [T] to [R] // The inverse function is [FromArray2] func ToArray2[F1 ~func(T1) R, F2 ~func(T2) R, T1, T2, R any](f1 F1, f2 F2) func(t Tuple2[T1, T2]) []R { - return func(t Tuple2[T1, T2]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - } - } + return func(t Tuple2[T1, T2]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + } + } } // FromArray converts an array of [R] into a [Tuple2] using 2 functions from [R] to [T] // The inverse function is [ToArray2] func FromArray2[F1 ~func(R) T1, F2 ~func(R) T2, T1, T2, R any](f1 F1, f2 F2) func(r []R) Tuple2[T1, T2] { - return func(r []R) Tuple2[T1, T2] { - return MakeTuple2( - f1(r[0]), - f2(r[1]), - ) - } + return func(r []R) Tuple2[T1, T2] { + return MakeTuple2( + f1(r[0]), + f2(r[1]), + ) + } } // Push2 creates a [Tuple3] from a [Tuple2] by appending a constant value func Push2[T1, T2, T3 any](value T3) func(Tuple2[T1, T2]) Tuple3[T1, T2, T3] { - return func(t Tuple2[T1, T2]) Tuple3[T1, T2, T3] { - return MakeTuple3(t.F1, t.F2, value) - } + return func(t Tuple2[T1, T2]) Tuple3[T1, T2, T3] { + return MakeTuple3(t.F1, t.F2, value) + } } // MakeTuple3 is a function that converts its 3 parameters into a [Tuple3] func MakeTuple3[T1, T2, T3 any](t1 T1, t2 T2, t3 T3) Tuple3[T1, T2, T3] { - return Tuple3[T1, T2, T3]{t1, t2, t3} + return Tuple3[T1, T2, T3]{t1, t2, t3} } // Tupled3 converts a function with 3 parameters returning into a function taking a Tuple3 // The inverse function is [Untupled3] func Tupled3[F ~func(T1, T2, T3) R, T1, T2, T3, R any](f F) func(Tuple3[T1, T2, T3]) R { - return func(t Tuple3[T1, T2, T3]) R { - return f(t.F1, t.F2, t.F3) - } + return func(t Tuple3[T1, T2, T3]) R { + return f(t.F1, t.F2, t.F3) + } } // Untupled3 converts a function with a [Tuple3] parameter into a function with 3 parameters // The inverse function is [Tupled3] func Untupled3[F ~func(Tuple3[T1, T2, T3]) R, T1, T2, T3, R any](f F) func(T1, T2, T3) R { - return func(t1 T1, t2 T2, t3 T3) R { - return f(MakeTuple3(t1, t2, t3)) - } + return func(t1 T1, t2 T2, t3 T3) R { + return f(MakeTuple3(t1, t2, t3)) + } } // Monoid3 creates a [Monoid] for a [Tuple3] based on 3 monoids for the contained types func Monoid3[T1, T2, T3 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3]) M.Monoid[Tuple3[T1, T2, T3]] { - return M.MakeMonoid(func(l, r Tuple3[T1, T2, T3]) Tuple3[T1, T2, T3]{ - return MakeTuple3(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3)) - }, MakeTuple3(m1.Empty(), m2.Empty(), m3.Empty())) + return M.MakeMonoid(func(l, r Tuple3[T1, T2, T3]) Tuple3[T1, T2, T3] { + return MakeTuple3(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3)) + }, MakeTuple3(m1.Empty(), m2.Empty(), m3.Empty())) } // Ord3 creates n [Ord] for a [Tuple3] based on 3 [Ord]s for the contained types func Ord3[T1, T2, T3 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3]) O.Ord[Tuple3[T1, T2, T3]] { - return O.MakeOrd(func(l, r Tuple3[T1, T2, T3]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - return 0 - }, func(l, r Tuple3[T1, T2, T3]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) - }) + return O.MakeOrd(func(l, r Tuple3[T1, T2, T3]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + return 0 + }, func(l, r Tuple3[T1, T2, T3]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) + }) } // Map3 maps each value of a [Tuple3] via a mapping function func Map3[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, T1, R1, T2, R2, T3, R3 any](f1 F1, f2 F2, f3 F3) func(Tuple3[T1, T2, T3]) Tuple3[R1, R2, R3] { - return func(t Tuple3[T1, T2, T3]) Tuple3[R1, R2, R3] { - return MakeTuple3( - f1(t.F1), - f2(t.F2), - f3(t.F3), - ) - } + return func(t Tuple3[T1, T2, T3]) Tuple3[R1, R2, R3] { + return MakeTuple3( + f1(t.F1), + f2(t.F2), + f3(t.F3), + ) + } } // Replicate3 creates a [Tuple3] with all fields set to the input value `t` func Replicate3[T any](t T) Tuple3[T, T, T] { - return MakeTuple3(t, t, t) + return MakeTuple3(t, t, t) } // String prints some debug info for the [Tuple3] func (t Tuple3[T1, T2, T3]) String() string { - return fmt.Sprintf("Tuple3[%T, %T, %T](%v, %v, %v)", t.F1, t.F2, t.F3, t.F1, t.F2, t.F3) + return fmt.Sprintf("Tuple3[%T, %T, %T](%v, %v, %v)", t.F1, t.F2, t.F3, t.F1, t.F2, t.F3) } // MarshalJSON marshals the [Tuple3] into a JSON array func (t Tuple3[T1, T2, T3]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3}) + return json.Marshal([]any{t.F1, t.F2, t.F3}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple3] func (t *Tuple3[T1, T2, T3]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - }}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + } + } + } + return nil } // ToArray converts the [Tuple3] into an array of type [R] using 3 transformation functions from [T] to [R] // The inverse function is [FromArray3] func ToArray3[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, T1, T2, T3, R any](f1 F1, f2 F2, f3 F3) func(t Tuple3[T1, T2, T3]) []R { - return func(t Tuple3[T1, T2, T3]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - } - } + return func(t Tuple3[T1, T2, T3]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + } + } } // FromArray converts an array of [R] into a [Tuple3] using 3 functions from [R] to [T] // The inverse function is [ToArray3] func FromArray3[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, T1, T2, T3, R any](f1 F1, f2 F2, f3 F3) func(r []R) Tuple3[T1, T2, T3] { - return func(r []R) Tuple3[T1, T2, T3] { - return MakeTuple3( - f1(r[0]), - f2(r[1]), - f3(r[2]), - ) - } + return func(r []R) Tuple3[T1, T2, T3] { + return MakeTuple3( + f1(r[0]), + f2(r[1]), + f3(r[2]), + ) + } } // Push3 creates a [Tuple4] from a [Tuple3] by appending a constant value func Push3[T1, T2, T3, T4 any](value T4) func(Tuple3[T1, T2, T3]) Tuple4[T1, T2, T3, T4] { - return func(t Tuple3[T1, T2, T3]) Tuple4[T1, T2, T3, T4] { - return MakeTuple4(t.F1, t.F2, t.F3, value) - } + return func(t Tuple3[T1, T2, T3]) Tuple4[T1, T2, T3, T4] { + return MakeTuple4(t.F1, t.F2, t.F3, value) + } } // MakeTuple4 is a function that converts its 4 parameters into a [Tuple4] func MakeTuple4[T1, T2, T3, T4 any](t1 T1, t2 T2, t3 T3, t4 T4) Tuple4[T1, T2, T3, T4] { - return Tuple4[T1, T2, T3, T4]{t1, t2, t3, t4} + return Tuple4[T1, T2, T3, T4]{t1, t2, t3, t4} } // Tupled4 converts a function with 4 parameters returning into a function taking a Tuple4 // The inverse function is [Untupled4] func Tupled4[F ~func(T1, T2, T3, T4) R, T1, T2, T3, T4, R any](f F) func(Tuple4[T1, T2, T3, T4]) R { - return func(t Tuple4[T1, T2, T3, T4]) R { - return f(t.F1, t.F2, t.F3, t.F4) - } + return func(t Tuple4[T1, T2, T3, T4]) R { + return f(t.F1, t.F2, t.F3, t.F4) + } } // Untupled4 converts a function with a [Tuple4] parameter into a function with 4 parameters // The inverse function is [Tupled4] func Untupled4[F ~func(Tuple4[T1, T2, T3, T4]) R, T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4) R { - return f(MakeTuple4(t1, t2, t3, t4)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4) R { + return f(MakeTuple4(t1, t2, t3, t4)) + } } // Monoid4 creates a [Monoid] for a [Tuple4] based on 4 monoids for the contained types func Monoid4[T1, T2, T3, T4 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4]) M.Monoid[Tuple4[T1, T2, T3, T4]] { - return M.MakeMonoid(func(l, r Tuple4[T1, T2, T3, T4]) Tuple4[T1, T2, T3, T4]{ - return MakeTuple4(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4)) - }, MakeTuple4(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty())) + return M.MakeMonoid(func(l, r Tuple4[T1, T2, T3, T4]) Tuple4[T1, T2, T3, T4] { + return MakeTuple4(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4)) + }, MakeTuple4(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty())) } // Ord4 creates n [Ord] for a [Tuple4] based on 4 [Ord]s for the contained types func Ord4[T1, T2, T3, T4 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4]) O.Ord[Tuple4[T1, T2, T3, T4]] { - return O.MakeOrd(func(l, r Tuple4[T1, T2, T3, T4]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - return 0 - }, func(l, r Tuple4[T1, T2, T3, T4]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) - }) + return O.MakeOrd(func(l, r Tuple4[T1, T2, T3, T4]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + return 0 + }, func(l, r Tuple4[T1, T2, T3, T4]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) + }) } // Map4 maps each value of a [Tuple4] via a mapping function func Map4[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, T1, R1, T2, R2, T3, R3, T4, R4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(Tuple4[T1, T2, T3, T4]) Tuple4[R1, R2, R3, R4] { - return func(t Tuple4[T1, T2, T3, T4]) Tuple4[R1, R2, R3, R4] { - return MakeTuple4( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - ) - } + return func(t Tuple4[T1, T2, T3, T4]) Tuple4[R1, R2, R3, R4] { + return MakeTuple4( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + ) + } } // Replicate4 creates a [Tuple4] with all fields set to the input value `t` func Replicate4[T any](t T) Tuple4[T, T, T, T] { - return MakeTuple4(t, t, t, t) + return MakeTuple4(t, t, t, t) } // String prints some debug info for the [Tuple4] func (t Tuple4[T1, T2, T3, T4]) String() string { - return fmt.Sprintf("Tuple4[%T, %T, %T, %T](%v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F1, t.F2, t.F3, t.F4) + return fmt.Sprintf("Tuple4[%T, %T, %T, %T](%v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F1, t.F2, t.F3, t.F4) } // MarshalJSON marshals the [Tuple4] into a JSON array func (t Tuple4[T1, T2, T3, T4]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple4] func (t *Tuple4[T1, T2, T3, T4]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - }}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + } + } + } + } + return nil } // ToArray converts the [Tuple4] into an array of type [R] using 4 transformation functions from [T] to [R] // The inverse function is [FromArray4] func ToArray4[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, T1, T2, T3, T4, R any](f1 F1, f2 F2, f3 F3, f4 F4) func(t Tuple4[T1, T2, T3, T4]) []R { - return func(t Tuple4[T1, T2, T3, T4]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - } - } + return func(t Tuple4[T1, T2, T3, T4]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + } + } } // FromArray converts an array of [R] into a [Tuple4] using 4 functions from [R] to [T] // The inverse function is [ToArray4] func FromArray4[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, T1, T2, T3, T4, R any](f1 F1, f2 F2, f3 F3, f4 F4) func(r []R) Tuple4[T1, T2, T3, T4] { - return func(r []R) Tuple4[T1, T2, T3, T4] { - return MakeTuple4( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - ) - } + return func(r []R) Tuple4[T1, T2, T3, T4] { + return MakeTuple4( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + ) + } } // Push4 creates a [Tuple5] from a [Tuple4] by appending a constant value func Push4[T1, T2, T3, T4, T5 any](value T5) func(Tuple4[T1, T2, T3, T4]) Tuple5[T1, T2, T3, T4, T5] { - return func(t Tuple4[T1, T2, T3, T4]) Tuple5[T1, T2, T3, T4, T5] { - return MakeTuple5(t.F1, t.F2, t.F3, t.F4, value) - } + return func(t Tuple4[T1, T2, T3, T4]) Tuple5[T1, T2, T3, T4, T5] { + return MakeTuple5(t.F1, t.F2, t.F3, t.F4, value) + } } // MakeTuple5 is a function that converts its 5 parameters into a [Tuple5] func MakeTuple5[T1, T2, T3, T4, T5 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) Tuple5[T1, T2, T3, T4, T5] { - return Tuple5[T1, T2, T3, T4, T5]{t1, t2, t3, t4, t5} + return Tuple5[T1, T2, T3, T4, T5]{t1, t2, t3, t4, t5} } // Tupled5 converts a function with 5 parameters returning into a function taking a Tuple5 // The inverse function is [Untupled5] func Tupled5[F ~func(T1, T2, T3, T4, T5) R, T1, T2, T3, T4, T5, R any](f F) func(Tuple5[T1, T2, T3, T4, T5]) R { - return func(t Tuple5[T1, T2, T3, T4, T5]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5) - } + return func(t Tuple5[T1, T2, T3, T4, T5]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5) + } } // Untupled5 converts a function with a [Tuple5] parameter into a function with 5 parameters // The inverse function is [Tupled5] func Untupled5[F ~func(Tuple5[T1, T2, T3, T4, T5]) R, T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) R { - return f(MakeTuple5(t1, t2, t3, t4, t5)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) R { + return f(MakeTuple5(t1, t2, t3, t4, t5)) + } } // Monoid5 creates a [Monoid] for a [Tuple5] based on 5 monoids for the contained types func Monoid5[T1, T2, T3, T4, T5 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5]) M.Monoid[Tuple5[T1, T2, T3, T4, T5]] { - return M.MakeMonoid(func(l, r Tuple5[T1, T2, T3, T4, T5]) Tuple5[T1, T2, T3, T4, T5]{ - return MakeTuple5(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5)) - }, MakeTuple5(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty())) + return M.MakeMonoid(func(l, r Tuple5[T1, T2, T3, T4, T5]) Tuple5[T1, T2, T3, T4, T5] { + return MakeTuple5(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5)) + }, MakeTuple5(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty())) } // Ord5 creates n [Ord] for a [Tuple5] based on 5 [Ord]s for the contained types func Ord5[T1, T2, T3, T4, T5 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5]) O.Ord[Tuple5[T1, T2, T3, T4, T5]] { - return O.MakeOrd(func(l, r Tuple5[T1, T2, T3, T4, T5]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - return 0 - }, func(l, r Tuple5[T1, T2, T3, T4, T5]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) - }) + return O.MakeOrd(func(l, r Tuple5[T1, T2, T3, T4, T5]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + return 0 + }, func(l, r Tuple5[T1, T2, T3, T4, T5]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) + }) } // Map5 maps each value of a [Tuple5] via a mapping function func Map5[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(Tuple5[T1, T2, T3, T4, T5]) Tuple5[R1, R2, R3, R4, R5] { - return func(t Tuple5[T1, T2, T3, T4, T5]) Tuple5[R1, R2, R3, R4, R5] { - return MakeTuple5( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - ) - } + return func(t Tuple5[T1, T2, T3, T4, T5]) Tuple5[R1, R2, R3, R4, R5] { + return MakeTuple5( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + ) + } } // Replicate5 creates a [Tuple5] with all fields set to the input value `t` func Replicate5[T any](t T) Tuple5[T, T, T, T, T] { - return MakeTuple5(t, t, t, t, t) + return MakeTuple5(t, t, t, t, t) } // String prints some debug info for the [Tuple5] func (t Tuple5[T1, T2, T3, T4, T5]) String() string { - return fmt.Sprintf("Tuple5[%T, %T, %T, %T, %T](%v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F1, t.F2, t.F3, t.F4, t.F5) + return fmt.Sprintf("Tuple5[%T, %T, %T, %T, %T](%v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F1, t.F2, t.F3, t.F4, t.F5) } // MarshalJSON marshals the [Tuple5] into a JSON array func (t Tuple5[T1, T2, T3, T4, T5]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple5] func (t *Tuple5[T1, T2, T3, T4, T5]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - }}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple5] into an array of type [R] using 5 transformation functions from [T] to [R] // The inverse function is [FromArray5] func ToArray5[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, T1, T2, T3, T4, T5, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(t Tuple5[T1, T2, T3, T4, T5]) []R { - return func(t Tuple5[T1, T2, T3, T4, T5]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - } - } + return func(t Tuple5[T1, T2, T3, T4, T5]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + } + } } // FromArray converts an array of [R] into a [Tuple5] using 5 functions from [R] to [T] // The inverse function is [ToArray5] func FromArray5[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, T1, T2, T3, T4, T5, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(r []R) Tuple5[T1, T2, T3, T4, T5] { - return func(r []R) Tuple5[T1, T2, T3, T4, T5] { - return MakeTuple5( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - ) - } + return func(r []R) Tuple5[T1, T2, T3, T4, T5] { + return MakeTuple5( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + ) + } } // Push5 creates a [Tuple6] from a [Tuple5] by appending a constant value func Push5[T1, T2, T3, T4, T5, T6 any](value T6) func(Tuple5[T1, T2, T3, T4, T5]) Tuple6[T1, T2, T3, T4, T5, T6] { - return func(t Tuple5[T1, T2, T3, T4, T5]) Tuple6[T1, T2, T3, T4, T5, T6] { - return MakeTuple6(t.F1, t.F2, t.F3, t.F4, t.F5, value) - } + return func(t Tuple5[T1, T2, T3, T4, T5]) Tuple6[T1, T2, T3, T4, T5, T6] { + return MakeTuple6(t.F1, t.F2, t.F3, t.F4, t.F5, value) + } } // MakeTuple6 is a function that converts its 6 parameters into a [Tuple6] func MakeTuple6[T1, T2, T3, T4, T5, T6 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) Tuple6[T1, T2, T3, T4, T5, T6] { - return Tuple6[T1, T2, T3, T4, T5, T6]{t1, t2, t3, t4, t5, t6} + return Tuple6[T1, T2, T3, T4, T5, T6]{t1, t2, t3, t4, t5, t6} } // Tupled6 converts a function with 6 parameters returning into a function taking a Tuple6 // The inverse function is [Untupled6] func Tupled6[F ~func(T1, T2, T3, T4, T5, T6) R, T1, T2, T3, T4, T5, T6, R any](f F) func(Tuple6[T1, T2, T3, T4, T5, T6]) R { - return func(t Tuple6[T1, T2, T3, T4, T5, T6]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6) - } + return func(t Tuple6[T1, T2, T3, T4, T5, T6]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6) + } } // Untupled6 converts a function with a [Tuple6] parameter into a function with 6 parameters // The inverse function is [Tupled6] func Untupled6[F ~func(Tuple6[T1, T2, T3, T4, T5, T6]) R, T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) R { - return f(MakeTuple6(t1, t2, t3, t4, t5, t6)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) R { + return f(MakeTuple6(t1, t2, t3, t4, t5, t6)) + } } // Monoid6 creates a [Monoid] for a [Tuple6] based on 6 monoids for the contained types func Monoid6[T1, T2, T3, T4, T5, T6 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5], m6 M.Monoid[T6]) M.Monoid[Tuple6[T1, T2, T3, T4, T5, T6]] { - return M.MakeMonoid(func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) Tuple6[T1, T2, T3, T4, T5, T6]{ - return MakeTuple6(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6)) - }, MakeTuple6(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty())) + return M.MakeMonoid(func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) Tuple6[T1, T2, T3, T4, T5, T6] { + return MakeTuple6(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6)) + }, MakeTuple6(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty())) } // Ord6 creates n [Ord] for a [Tuple6] based on 6 [Ord]s for the contained types func Ord6[T1, T2, T3, T4, T5, T6 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5], o6 O.Ord[T6]) O.Ord[Tuple6[T1, T2, T3, T4, T5, T6]] { - return O.MakeOrd(func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - if c:= o6.Compare(l.F6, r.F6); c != 0 {return c} - return 0 - }, func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) - }) + return O.MakeOrd(func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + if c := o6.Compare(l.F6, r.F6); c != 0 { + return c + } + return 0 + }, func(l, r Tuple6[T1, T2, T3, T4, T5, T6]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) + }) } // Map6 maps each value of a [Tuple6] via a mapping function func Map6[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, F6 ~func(T6) R6, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5, T6, R6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(Tuple6[T1, T2, T3, T4, T5, T6]) Tuple6[R1, R2, R3, R4, R5, R6] { - return func(t Tuple6[T1, T2, T3, T4, T5, T6]) Tuple6[R1, R2, R3, R4, R5, R6] { - return MakeTuple6( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - ) - } + return func(t Tuple6[T1, T2, T3, T4, T5, T6]) Tuple6[R1, R2, R3, R4, R5, R6] { + return MakeTuple6( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + ) + } } // Replicate6 creates a [Tuple6] with all fields set to the input value `t` func Replicate6[T any](t T) Tuple6[T, T, T, T, T, T] { - return MakeTuple6(t, t, t, t, t, t) + return MakeTuple6(t, t, t, t, t, t) } // String prints some debug info for the [Tuple6] func (t Tuple6[T1, T2, T3, T4, T5, T6]) String() string { - return fmt.Sprintf("Tuple6[%T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6) + return fmt.Sprintf("Tuple6[%T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6) } // MarshalJSON marshals the [Tuple6] into a JSON array func (t Tuple6[T1, T2, T3, T4, T5, T6]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple6] func (t *Tuple6[T1, T2, T3, T4, T5, T6]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - if l > 5 { - if err := json.Unmarshal(tmp[5], &t.F6); err != nil {return err} - }}}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + if l > 5 { + if err := json.Unmarshal(tmp[5], &t.F6); err != nil { + return err + } + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple6] into an array of type [R] using 6 transformation functions from [T] to [R] // The inverse function is [FromArray6] func ToArray6[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, F6 ~func(T6) R, T1, T2, T3, T4, T5, T6, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(t Tuple6[T1, T2, T3, T4, T5, T6]) []R { - return func(t Tuple6[T1, T2, T3, T4, T5, T6]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - } - } + return func(t Tuple6[T1, T2, T3, T4, T5, T6]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + } + } } // FromArray converts an array of [R] into a [Tuple6] using 6 functions from [R] to [T] // The inverse function is [ToArray6] func FromArray6[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, F6 ~func(R) T6, T1, T2, T3, T4, T5, T6, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(r []R) Tuple6[T1, T2, T3, T4, T5, T6] { - return func(r []R) Tuple6[T1, T2, T3, T4, T5, T6] { - return MakeTuple6( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - f6(r[5]), - ) - } + return func(r []R) Tuple6[T1, T2, T3, T4, T5, T6] { + return MakeTuple6( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + f6(r[5]), + ) + } } // Push6 creates a [Tuple7] from a [Tuple6] by appending a constant value func Push6[T1, T2, T3, T4, T5, T6, T7 any](value T7) func(Tuple6[T1, T2, T3, T4, T5, T6]) Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return func(t Tuple6[T1, T2, T3, T4, T5, T6]) Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return MakeTuple7(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, value) - } + return func(t Tuple6[T1, T2, T3, T4, T5, T6]) Tuple7[T1, T2, T3, T4, T5, T6, T7] { + return MakeTuple7(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, value) + } } // MakeTuple7 is a function that converts its 7 parameters into a [Tuple7] func MakeTuple7[T1, T2, T3, T4, T5, T6, T7 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return Tuple7[T1, T2, T3, T4, T5, T6, T7]{t1, t2, t3, t4, t5, t6, t7} + return Tuple7[T1, T2, T3, T4, T5, T6, T7]{t1, t2, t3, t4, t5, t6, t7} } // Tupled7 converts a function with 7 parameters returning into a function taking a Tuple7 // The inverse function is [Untupled7] func Tupled7[F ~func(T1, T2, T3, T4, T5, T6, T7) R, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(Tuple7[T1, T2, T3, T4, T5, T6, T7]) R { - return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7) - } + return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7) + } } // Untupled7 converts a function with a [Tuple7] parameter into a function with 7 parameters // The inverse function is [Tupled7] func Untupled7[F ~func(Tuple7[T1, T2, T3, T4, T5, T6, T7]) R, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) R { - return f(MakeTuple7(t1, t2, t3, t4, t5, t6, t7)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) R { + return f(MakeTuple7(t1, t2, t3, t4, t5, t6, t7)) + } } // Monoid7 creates a [Monoid] for a [Tuple7] based on 7 monoids for the contained types func Monoid7[T1, T2, T3, T4, T5, T6, T7 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5], m6 M.Monoid[T6], m7 M.Monoid[T7]) M.Monoid[Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return M.MakeMonoid(func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple7[T1, T2, T3, T4, T5, T6, T7]{ - return MakeTuple7(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7)) - }, MakeTuple7(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty())) + return M.MakeMonoid(func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple7[T1, T2, T3, T4, T5, T6, T7] { + return MakeTuple7(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7)) + }, MakeTuple7(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty())) } // Ord7 creates n [Ord] for a [Tuple7] based on 7 [Ord]s for the contained types func Ord7[T1, T2, T3, T4, T5, T6, T7 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5], o6 O.Ord[T6], o7 O.Ord[T7]) O.Ord[Tuple7[T1, T2, T3, T4, T5, T6, T7]] { - return O.MakeOrd(func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - if c:= o6.Compare(l.F6, r.F6); c != 0 {return c} - if c:= o7.Compare(l.F7, r.F7); c != 0 {return c} - return 0 - }, func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) - }) + return O.MakeOrd(func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + if c := o6.Compare(l.F6, r.F6); c != 0 { + return c + } + if c := o7.Compare(l.F7, r.F7); c != 0 { + return c + } + return 0 + }, func(l, r Tuple7[T1, T2, T3, T4, T5, T6, T7]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) + }) } // Map7 maps each value of a [Tuple7] via a mapping function func Map7[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, F6 ~func(T6) R6, F7 ~func(T7) R7, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5, T6, R6, T7, R7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple7[R1, R2, R3, R4, R5, R6, R7] { - return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple7[R1, R2, R3, R4, R5, R6, R7] { - return MakeTuple7( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - ) - } + return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple7[R1, R2, R3, R4, R5, R6, R7] { + return MakeTuple7( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + ) + } } // Replicate7 creates a [Tuple7] with all fields set to the input value `t` func Replicate7[T any](t T) Tuple7[T, T, T, T, T, T, T] { - return MakeTuple7(t, t, t, t, t, t, t) + return MakeTuple7(t, t, t, t, t, t, t) } // String prints some debug info for the [Tuple7] func (t Tuple7[T1, T2, T3, T4, T5, T6, T7]) String() string { - return fmt.Sprintf("Tuple7[%T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7) + return fmt.Sprintf("Tuple7[%T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7) } // MarshalJSON marshals the [Tuple7] into a JSON array func (t Tuple7[T1, T2, T3, T4, T5, T6, T7]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple7] func (t *Tuple7[T1, T2, T3, T4, T5, T6, T7]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - if l > 5 { - if err := json.Unmarshal(tmp[5], &t.F6); err != nil {return err} - if l > 6 { - if err := json.Unmarshal(tmp[6], &t.F7); err != nil {return err} - }}}}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + if l > 5 { + if err := json.Unmarshal(tmp[5], &t.F6); err != nil { + return err + } + if l > 6 { + if err := json.Unmarshal(tmp[6], &t.F7); err != nil { + return err + } + } + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple7] into an array of type [R] using 7 transformation functions from [T] to [R] // The inverse function is [FromArray7] func ToArray7[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, F6 ~func(T6) R, F7 ~func(T7) R, T1, T2, T3, T4, T5, T6, T7, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) []R { - return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - } - } + return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + } + } } // FromArray converts an array of [R] into a [Tuple7] using 7 functions from [R] to [T] // The inverse function is [ToArray7] func FromArray7[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, F6 ~func(R) T6, F7 ~func(R) T7, T1, T2, T3, T4, T5, T6, T7, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(r []R) Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return func(r []R) Tuple7[T1, T2, T3, T4, T5, T6, T7] { - return MakeTuple7( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - f6(r[5]), - f7(r[6]), - ) - } + return func(r []R) Tuple7[T1, T2, T3, T4, T5, T6, T7] { + return MakeTuple7( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + f6(r[5]), + f7(r[6]), + ) + } } // Push7 creates a [Tuple8] from a [Tuple7] by appending a constant value func Push7[T1, T2, T3, T4, T5, T6, T7, T8 any](value T8) func(Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return MakeTuple8(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, value) - } + return func(t Tuple7[T1, T2, T3, T4, T5, T6, T7]) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { + return MakeTuple8(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, value) + } } // MakeTuple8 is a function that converts its 8 parameters into a [Tuple8] func MakeTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]{t1, t2, t3, t4, t5, t6, t7, t8} + return Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]{t1, t2, t3, t4, t5, t6, t7, t8} } // Tupled8 converts a function with 8 parameters returning into a function taking a Tuple8 // The inverse function is [Untupled8] func Tupled8[F ~func(T1, T2, T3, T4, T5, T6, T7, T8) R, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) R { - return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8) - } + return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8) + } } // Untupled8 converts a function with a [Tuple8] parameter into a function with 8 parameters // The inverse function is [Tupled8] func Untupled8[F ~func(Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) R, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) R { - return f(MakeTuple8(t1, t2, t3, t4, t5, t6, t7, t8)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) R { + return f(MakeTuple8(t1, t2, t3, t4, t5, t6, t7, t8)) + } } // Monoid8 creates a [Monoid] for a [Tuple8] based on 8 monoids for the contained types func Monoid8[T1, T2, T3, T4, T5, T6, T7, T8 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5], m6 M.Monoid[T6], m7 M.Monoid[T7], m8 M.Monoid[T8]) M.Monoid[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return M.MakeMonoid(func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]{ - return MakeTuple8(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8)) - }, MakeTuple8(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty())) + return M.MakeMonoid(func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { + return MakeTuple8(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8)) + }, MakeTuple8(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty())) } // Ord8 creates n [Ord] for a [Tuple8] based on 8 [Ord]s for the contained types func Ord8[T1, T2, T3, T4, T5, T6, T7, T8 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5], o6 O.Ord[T6], o7 O.Ord[T7], o8 O.Ord[T8]) O.Ord[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { - return O.MakeOrd(func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - if c:= o6.Compare(l.F6, r.F6); c != 0 {return c} - if c:= o7.Compare(l.F7, r.F7); c != 0 {return c} - if c:= o8.Compare(l.F8, r.F8); c != 0 {return c} - return 0 - }, func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) - }) + return O.MakeOrd(func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + if c := o6.Compare(l.F6, r.F6); c != 0 { + return c + } + if c := o7.Compare(l.F7, r.F7); c != 0 { + return c + } + if c := o8.Compare(l.F8, r.F8); c != 0 { + return c + } + return 0 + }, func(l, r Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) + }) } // Map8 maps each value of a [Tuple8] via a mapping function func Map8[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, F6 ~func(T6) R6, F7 ~func(T7) R7, F8 ~func(T8) R8, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5, T6, R6, T7, R7, T8, R8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple8[R1, R2, R3, R4, R5, R6, R7, R8] { - return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple8[R1, R2, R3, R4, R5, R6, R7, R8] { - return MakeTuple8( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - ) - } + return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple8[R1, R2, R3, R4, R5, R6, R7, R8] { + return MakeTuple8( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + ) + } } // Replicate8 creates a [Tuple8] with all fields set to the input value `t` func Replicate8[T any](t T) Tuple8[T, T, T, T, T, T, T, T] { - return MakeTuple8(t, t, t, t, t, t, t, t) + return MakeTuple8(t, t, t, t, t, t, t, t) } // String prints some debug info for the [Tuple8] func (t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) String() string { - return fmt.Sprintf("Tuple8[%T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8) + return fmt.Sprintf("Tuple8[%T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8) } // MarshalJSON marshals the [Tuple8] into a JSON array func (t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple8] func (t *Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - if l > 5 { - if err := json.Unmarshal(tmp[5], &t.F6); err != nil {return err} - if l > 6 { - if err := json.Unmarshal(tmp[6], &t.F7); err != nil {return err} - if l > 7 { - if err := json.Unmarshal(tmp[7], &t.F8); err != nil {return err} - }}}}}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + if l > 5 { + if err := json.Unmarshal(tmp[5], &t.F6); err != nil { + return err + } + if l > 6 { + if err := json.Unmarshal(tmp[6], &t.F7); err != nil { + return err + } + if l > 7 { + if err := json.Unmarshal(tmp[7], &t.F8); err != nil { + return err + } + } + } + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple8] into an array of type [R] using 8 transformation functions from [T] to [R] // The inverse function is [FromArray8] func ToArray8[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, F6 ~func(T6) R, F7 ~func(T7) R, F8 ~func(T8) R, T1, T2, T3, T4, T5, T6, T7, T8, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) []R { - return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - } - } + return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + } + } } // FromArray converts an array of [R] into a [Tuple8] using 8 functions from [R] to [T] // The inverse function is [ToArray8] func FromArray8[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, F6 ~func(R) T6, F7 ~func(R) T7, F8 ~func(R) T8, T1, T2, T3, T4, T5, T6, T7, T8, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(r []R) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return func(r []R) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { - return MakeTuple8( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - f6(r[5]), - f7(r[6]), - f8(r[7]), - ) - } + return func(r []R) Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] { + return MakeTuple8( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + f6(r[5]), + f7(r[6]), + f8(r[7]), + ) + } } // Push8 creates a [Tuple9] from a [Tuple8] by appending a constant value func Push8[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](value T9) func(Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return MakeTuple9(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, value) - } + return func(t Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { + return MakeTuple9(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, value) + } } // MakeTuple9 is a function that converts its 9 parameters into a [Tuple9] func MakeTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]{t1, t2, t3, t4, t5, t6, t7, t8, t9} + return Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]{t1, t2, t3, t4, t5, t6, t7, t8, t9} } // Tupled9 converts a function with 9 parameters returning into a function taking a Tuple9 // The inverse function is [Untupled9] func Tupled9[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) R { - return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9) - } + return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9) + } } // Untupled9 converts a function with a [Tuple9] parameter into a function with 9 parameters // The inverse function is [Tupled9] func Untupled9[F ~func(Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) R { - return f(MakeTuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) R { + return f(MakeTuple9(t1, t2, t3, t4, t5, t6, t7, t8, t9)) + } } // Monoid9 creates a [Monoid] for a [Tuple9] based on 9 monoids for the contained types func Monoid9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5], m6 M.Monoid[T6], m7 M.Monoid[T7], m8 M.Monoid[T8], m9 M.Monoid[T9]) M.Monoid[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return M.MakeMonoid(func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]{ - return MakeTuple9(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8), m9.Concat(l.F9, r.F9)) - }, MakeTuple9(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty(), m9.Empty())) + return M.MakeMonoid(func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { + return MakeTuple9(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8), m9.Concat(l.F9, r.F9)) + }, MakeTuple9(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty(), m9.Empty())) } // Ord9 creates n [Ord] for a [Tuple9] based on 9 [Ord]s for the contained types func Ord9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5], o6 O.Ord[T6], o7 O.Ord[T7], o8 O.Ord[T8], o9 O.Ord[T9]) O.Ord[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { - return O.MakeOrd(func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - if c:= o6.Compare(l.F6, r.F6); c != 0 {return c} - if c:= o7.Compare(l.F7, r.F7); c != 0 {return c} - if c:= o8.Compare(l.F8, r.F8); c != 0 {return c} - if c:= o9.Compare(l.F9, r.F9); c != 0 {return c} - return 0 - }, func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) && o9.Equals(l.F9, r.F9) - }) + return O.MakeOrd(func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + if c := o6.Compare(l.F6, r.F6); c != 0 { + return c + } + if c := o7.Compare(l.F7, r.F7); c != 0 { + return c + } + if c := o8.Compare(l.F8, r.F8); c != 0 { + return c + } + if c := o9.Compare(l.F9, r.F9); c != 0 { + return c + } + return 0 + }, func(l, r Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) && o9.Equals(l.F9, r.F9) + }) } // Map9 maps each value of a [Tuple9] via a mapping function func Map9[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, F6 ~func(T6) R6, F7 ~func(T7) R7, F8 ~func(T8) R8, F9 ~func(T9) R9, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5, T6, R6, T7, R7, T8, R8, T9, R9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple9[R1, R2, R3, R4, R5, R6, R7, R8, R9] { - return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple9[R1, R2, R3, R4, R5, R6, R7, R8, R9] { - return MakeTuple9( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - f9(t.F9), - ) - } + return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple9[R1, R2, R3, R4, R5, R6, R7, R8, R9] { + return MakeTuple9( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + f9(t.F9), + ) + } } // Replicate9 creates a [Tuple9] with all fields set to the input value `t` func Replicate9[T any](t T) Tuple9[T, T, T, T, T, T, T, T, T] { - return MakeTuple9(t, t, t, t, t, t, t, t, t) + return MakeTuple9(t, t, t, t, t, t, t, t, t) } // String prints some debug info for the [Tuple9] func (t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) String() string { - return fmt.Sprintf("Tuple9[%T, %T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9) + return fmt.Sprintf("Tuple9[%T, %T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9) } // MarshalJSON marshals the [Tuple9] into a JSON array func (t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple9] func (t *Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - if l > 5 { - if err := json.Unmarshal(tmp[5], &t.F6); err != nil {return err} - if l > 6 { - if err := json.Unmarshal(tmp[6], &t.F7); err != nil {return err} - if l > 7 { - if err := json.Unmarshal(tmp[7], &t.F8); err != nil {return err} - if l > 8 { - if err := json.Unmarshal(tmp[8], &t.F9); err != nil {return err} - }}}}}}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + if l > 5 { + if err := json.Unmarshal(tmp[5], &t.F6); err != nil { + return err + } + if l > 6 { + if err := json.Unmarshal(tmp[6], &t.F7); err != nil { + return err + } + if l > 7 { + if err := json.Unmarshal(tmp[7], &t.F8); err != nil { + return err + } + if l > 8 { + if err := json.Unmarshal(tmp[8], &t.F9); err != nil { + return err + } + } + } + } + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple9] into an array of type [R] using 9 transformation functions from [T] to [R] // The inverse function is [FromArray9] func ToArray9[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, F6 ~func(T6) R, F7 ~func(T7) R, F8 ~func(T8) R, F9 ~func(T9) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) []R { - return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - f9(t.F9), - } - } + return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + f9(t.F9), + } + } } // FromArray converts an array of [R] into a [Tuple9] using 9 functions from [R] to [T] // The inverse function is [ToArray9] func FromArray9[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, F6 ~func(R) T6, F7 ~func(R) T7, F8 ~func(R) T8, F9 ~func(R) T9, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(r []R) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return func(r []R) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { - return MakeTuple9( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - f6(r[5]), - f7(r[6]), - f8(r[7]), - f9(r[8]), - ) - } + return func(r []R) Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] { + return MakeTuple9( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + f6(r[5]), + f7(r[6]), + f8(r[7]), + f9(r[8]), + ) + } } // Push9 creates a [Tuple10] from a [Tuple9] by appending a constant value func Push9[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](value T10) func(Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return MakeTuple10(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, value) - } + return func(t Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + return MakeTuple10(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, value) + } } // MakeTuple10 is a function that converts its 10 parameters into a [Tuple10] func MakeTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10} + return Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]{t1, t2, t3, t4, t5, t6, t7, t8, t9, t10} } // Tupled10 converts a function with 10 parameters returning into a function taking a Tuple10 // The inverse function is [Untupled10] func Tupled10[F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) R { - return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) R { - return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10) - } + return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) R { + return f(t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10) + } } // Untupled10 converts a function with a [Tuple10] parameter into a function with 10 parameters // The inverse function is [Tupled10] func Untupled10[F ~func(Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) R { - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) R { - return f(MakeTuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) - } + return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) R { + return f(MakeTuple10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)) + } } // Monoid10 creates a [Monoid] for a [Tuple10] based on 10 monoids for the contained types func Monoid10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](m1 M.Monoid[T1], m2 M.Monoid[T2], m3 M.Monoid[T3], m4 M.Monoid[T4], m5 M.Monoid[T5], m6 M.Monoid[T6], m7 M.Monoid[T7], m8 M.Monoid[T8], m9 M.Monoid[T9], m10 M.Monoid[T10]) M.Monoid[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return M.MakeMonoid(func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]{ - return MakeTuple10(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8), m9.Concat(l.F9, r.F9), m10.Concat(l.F10, r.F10)) - }, MakeTuple10(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty(), m9.Empty(), m10.Empty())) + return M.MakeMonoid(func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + return MakeTuple10(m1.Concat(l.F1, r.F1), m2.Concat(l.F2, r.F2), m3.Concat(l.F3, r.F3), m4.Concat(l.F4, r.F4), m5.Concat(l.F5, r.F5), m6.Concat(l.F6, r.F6), m7.Concat(l.F7, r.F7), m8.Concat(l.F8, r.F8), m9.Concat(l.F9, r.F9), m10.Concat(l.F10, r.F10)) + }, MakeTuple10(m1.Empty(), m2.Empty(), m3.Empty(), m4.Empty(), m5.Empty(), m6.Empty(), m7.Empty(), m8.Empty(), m9.Empty(), m10.Empty())) } // Ord10 creates n [Ord] for a [Tuple10] based on 10 [Ord]s for the contained types func Ord10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](o1 O.Ord[T1], o2 O.Ord[T2], o3 O.Ord[T3], o4 O.Ord[T4], o5 O.Ord[T5], o6 O.Ord[T6], o7 O.Ord[T7], o8 O.Ord[T8], o9 O.Ord[T9], o10 O.Ord[T10]) O.Ord[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { - return O.MakeOrd(func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) int { - if c:= o1.Compare(l.F1, r.F1); c != 0 {return c} - if c:= o2.Compare(l.F2, r.F2); c != 0 {return c} - if c:= o3.Compare(l.F3, r.F3); c != 0 {return c} - if c:= o4.Compare(l.F4, r.F4); c != 0 {return c} - if c:= o5.Compare(l.F5, r.F5); c != 0 {return c} - if c:= o6.Compare(l.F6, r.F6); c != 0 {return c} - if c:= o7.Compare(l.F7, r.F7); c != 0 {return c} - if c:= o8.Compare(l.F8, r.F8); c != 0 {return c} - if c:= o9.Compare(l.F9, r.F9); c != 0 {return c} - if c:= o10.Compare(l.F10, r.F10); c != 0 {return c} - return 0 - }, func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) bool { - return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) && o9.Equals(l.F9, r.F9) && o10.Equals(l.F10, r.F10) - }) + return O.MakeOrd(func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) int { + if c := o1.Compare(l.F1, r.F1); c != 0 { + return c + } + if c := o2.Compare(l.F2, r.F2); c != 0 { + return c + } + if c := o3.Compare(l.F3, r.F3); c != 0 { + return c + } + if c := o4.Compare(l.F4, r.F4); c != 0 { + return c + } + if c := o5.Compare(l.F5, r.F5); c != 0 { + return c + } + if c := o6.Compare(l.F6, r.F6); c != 0 { + return c + } + if c := o7.Compare(l.F7, r.F7); c != 0 { + return c + } + if c := o8.Compare(l.F8, r.F8); c != 0 { + return c + } + if c := o9.Compare(l.F9, r.F9); c != 0 { + return c + } + if c := o10.Compare(l.F10, r.F10); c != 0 { + return c + } + return 0 + }, func(l, r Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) bool { + return o1.Equals(l.F1, r.F1) && o2.Equals(l.F2, r.F2) && o3.Equals(l.F3, r.F3) && o4.Equals(l.F4, r.F4) && o5.Equals(l.F5, r.F5) && o6.Equals(l.F6, r.F6) && o7.Equals(l.F7, r.F7) && o8.Equals(l.F8, r.F8) && o9.Equals(l.F9, r.F9) && o10.Equals(l.F10, r.F10) + }) } // Map10 maps each value of a [Tuple10] via a mapping function func Map10[F1 ~func(T1) R1, F2 ~func(T2) R2, F3 ~func(T3) R3, F4 ~func(T4) R4, F5 ~func(T5) R5, F6 ~func(T6) R6, F7 ~func(T7) R7, F8 ~func(T8) R8, F9 ~func(T9) R9, F10 ~func(T10) R10, T1, R1, T2, R2, T3, R3, T4, R4, T5, R5, T6, R6, T7, R7, T8, R8, T9, R9, T10, R10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) Tuple10[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10] { - return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) Tuple10[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10] { - return MakeTuple10( - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - f9(t.F9), - f10(t.F10), - ) - } + return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) Tuple10[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10] { + return MakeTuple10( + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + f9(t.F9), + f10(t.F10), + ) + } } // Replicate10 creates a [Tuple10] with all fields set to the input value `t` func Replicate10[T any](t T) Tuple10[T, T, T, T, T, T, T, T, T, T] { - return MakeTuple10(t, t, t, t, t, t, t, t, t, t) + return MakeTuple10(t, t, t, t, t, t, t, t, t, t) } // String prints some debug info for the [Tuple10] func (t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) String() string { - return fmt.Sprintf("Tuple10[%T, %T, %T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10) + return fmt.Sprintf("Tuple10[%T, %T, %T, %T, %T, %T, %T, %T, %T, %T](%v, %v, %v, %v, %v, %v, %v, %v, %v, %v)", t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10, t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10) } // MarshalJSON marshals the [Tuple10] into a JSON array func (t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) MarshalJSON() ([]byte, error) { - return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10}) + return json.Marshal([]any{t.F1, t.F2, t.F3, t.F4, t.F5, t.F6, t.F7, t.F8, t.F9, t.F10}) } // UnmarshalJSON unmarshals a JSON array into a [Tuple10] func (t *Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) UnmarshalJSON(data []byte) error { - var tmp []json.RawMessage - if err := json.Unmarshal(data, &tmp); err != nil {return err} - l := len(tmp) - if l > 0 { - if err := json.Unmarshal(tmp[0], &t.F1); err != nil {return err} - if l > 1 { - if err := json.Unmarshal(tmp[1], &t.F2); err != nil {return err} - if l > 2 { - if err := json.Unmarshal(tmp[2], &t.F3); err != nil {return err} - if l > 3 { - if err := json.Unmarshal(tmp[3], &t.F4); err != nil {return err} - if l > 4 { - if err := json.Unmarshal(tmp[4], &t.F5); err != nil {return err} - if l > 5 { - if err := json.Unmarshal(tmp[5], &t.F6); err != nil {return err} - if l > 6 { - if err := json.Unmarshal(tmp[6], &t.F7); err != nil {return err} - if l > 7 { - if err := json.Unmarshal(tmp[7], &t.F8); err != nil {return err} - if l > 8 { - if err := json.Unmarshal(tmp[8], &t.F9); err != nil {return err} - if l > 9 { - if err := json.Unmarshal(tmp[9], &t.F10); err != nil {return err} - }}}}}}}}}} - return nil + var tmp []json.RawMessage + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + l := len(tmp) + if l > 0 { + if err := json.Unmarshal(tmp[0], &t.F1); err != nil { + return err + } + if l > 1 { + if err := json.Unmarshal(tmp[1], &t.F2); err != nil { + return err + } + if l > 2 { + if err := json.Unmarshal(tmp[2], &t.F3); err != nil { + return err + } + if l > 3 { + if err := json.Unmarshal(tmp[3], &t.F4); err != nil { + return err + } + if l > 4 { + if err := json.Unmarshal(tmp[4], &t.F5); err != nil { + return err + } + if l > 5 { + if err := json.Unmarshal(tmp[5], &t.F6); err != nil { + return err + } + if l > 6 { + if err := json.Unmarshal(tmp[6], &t.F7); err != nil { + return err + } + if l > 7 { + if err := json.Unmarshal(tmp[7], &t.F8); err != nil { + return err + } + if l > 8 { + if err := json.Unmarshal(tmp[8], &t.F9); err != nil { + return err + } + if l > 9 { + if err := json.Unmarshal(tmp[9], &t.F10); err != nil { + return err + } + } + } + } + } + } + } + } + } + } + } + return nil } // ToArray converts the [Tuple10] into an array of type [R] using 10 transformation functions from [T] to [R] // The inverse function is [FromArray10] func ToArray10[F1 ~func(T1) R, F2 ~func(T2) R, F3 ~func(T3) R, F4 ~func(T4) R, F5 ~func(T5) R, F6 ~func(T6) R, F7 ~func(T7) R, F8 ~func(T8) R, F9 ~func(T9) R, F10 ~func(T10) R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) []R { - return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) []R { - return []R{ - f1(t.F1), - f2(t.F2), - f3(t.F3), - f4(t.F4), - f5(t.F5), - f6(t.F6), - f7(t.F7), - f8(t.F8), - f9(t.F9), - f10(t.F10), - } - } + return func(t Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) []R { + return []R{ + f1(t.F1), + f2(t.F2), + f3(t.F3), + f4(t.F4), + f5(t.F5), + f6(t.F6), + f7(t.F7), + f8(t.F8), + f9(t.F9), + f10(t.F10), + } + } } // FromArray converts an array of [R] into a [Tuple10] using 10 functions from [R] to [T] // The inverse function is [ToArray10] func FromArray10[F1 ~func(R) T1, F2 ~func(R) T2, F3 ~func(R) T3, F4 ~func(R) T4, F5 ~func(R) T5, F6 ~func(R) T6, F7 ~func(R) T7, F8 ~func(R) T8, F9 ~func(R) T9, F10 ~func(R) T10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(r []R) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return func(r []R) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - return MakeTuple10( - f1(r[0]), - f2(r[1]), - f3(r[2]), - f4(r[3]), - f5(r[4]), - f6(r[5]), - f7(r[6]), - f8(r[7]), - f9(r[8]), - f10(r[9]), - ) - } + return func(r []R) Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + return MakeTuple10( + f1(r[0]), + f2(r[1]), + f3(r[2]), + f4(r[3]), + f5(r[4]), + f6(r[5]), + f7(r[6]), + f8(r[7]), + f9(r[8]), + f10(r[9]), + ) + } }