From e7e58c9d5493eb8bd011623f8673657ecfbf67df Mon Sep 17 00:00:00 2001 From: "Dr. Carsten Leue" Date: Wed, 5 Mar 2025 00:04:52 +0100 Subject: [PATCH] fix: get rid of more IO --- v2/cli/ioeither.go | 11 +- v2/cli/monad2.go | 16 +- v2/io/gen.go | 2 +- v2/ioeither/gen.go | 837 ++++++++++++++--------- v2/ioeither/generic/gen.go | 1058 +++-------------------------- v2/iooption/generic/sync.go | 28 - v2/iooption/sync.go | 8 +- v2/readerio/generic/sync.go | 34 - v2/readerio/sync.go | 11 +- v2/readerioeither/generic/sync.go | 28 - v2/readerioeither/sync.go | 5 +- 11 files changed, 660 insertions(+), 1378 deletions(-) delete mode 100644 v2/iooption/generic/sync.go delete mode 100644 v2/readerio/generic/sync.go delete mode 100644 v2/readerioeither/generic/sync.go diff --git a/v2/cli/ioeither.go b/v2/cli/ioeither.go index 27a2299..a6b8ea2 100644 --- a/v2/cli/ioeither.go +++ b/v2/cli/ioeither.go @@ -39,15 +39,15 @@ func genericIOEither(param string) string { var extrasIOEither = A.From("E") func generateIOEitherSequenceT(f, fg *os.File, i int) { - deprecatedGenerateGenericSequenceT(nonGenericIOEither, genericIOEither, extrasIOEither)(f, fg, i) + generateGenericSequenceT(nonGenericIOEither, extrasIOEither)(f, i) } func generateIOEitherSequenceTuple(f, fg *os.File, i int) { - deprecatedGenerateGenericSequenceTuple(nonGenericIOEither, genericIOEither, extrasIOEither)(f, fg, i) + generateGenericSequenceTuple(nonGenericIOEither, extrasIOEither)(f, i) } func generateIOEitherTraverseTuple(f, fg *os.File, i int) { - deprecatedGenerateGenericTraverseTuple(nonGenericIOEither, genericIOEither, extrasIOEither)(f, fg, i) + generateGenericTraverseTuple(nonGenericIOEither, extrasIOEither)(f, i) } func generateIOEitherUneitherize(f, fg *os.File, i int) { @@ -224,7 +224,8 @@ func generateIOEitherHelpers(filename string, count int) error { fmt.Fprintf(f, ` import ( G "github.com/IBM/fp-go/v2/%s/generic" - T "github.com/IBM/fp-go/v2/tuple" + "github.com/IBM/fp-go/v2/internal/apply" + "github.com/IBM/fp-go/v2/tuple" ) `, pkg) @@ -238,8 +239,6 @@ import ( fmt.Fprintf(fg, ` import ( ET "github.com/IBM/fp-go/v2/either" - T "github.com/IBM/fp-go/v2/tuple" - A "github.com/IBM/fp-go/v2/internal/apply" ) `) diff --git a/v2/cli/monad2.go b/v2/cli/monad2.go index 72da48a..9dee332 100644 --- a/v2/cli/monad2.go +++ b/v2/cli/monad2.go @@ -306,11 +306,11 @@ func generateGenericSequenceT( } fmt.Fprintf(f, ") %s {\n", nonGenericType(tuple)) fmt.Fprintf(f, " return apply.SequenceT%d(\n", i) - fmt.Fprintf(f, " Map[%s, %s],\n", "T1", generateNestedCallbacksPlain(1, i)) + fmt.Fprintf(f, " Map[%s],\n", joinAll(", ")(extra, A.From("T1", generateNestedCallbacksPlain(1, i)))) // the apply calls for j := 2; j <= i; j++ { - fmt.Fprintf(f, " Ap[%s, T%d],\n", generateNestedCallbacksPlain(j, i), j) + fmt.Fprintf(f, " Ap[%s],\n", joinAll(", ")(A.Of(generateNestedCallbacksPlain(j, i)), extra, A.Of(fmt.Sprintf("T%d", j)))) } // function parameters for j := 1; j <= i; j++ { @@ -345,11 +345,11 @@ func generateGenericSequenceTuple( } fmt.Fprintf(f, "]) %s {\n", nonGenericType(tuple)) fmt.Fprintf(f, " return apply.SequenceTuple%d(\n", i) - fmt.Fprintf(f, " Map[%s, %s],\n", "T1", generateNestedCallbacksPlain(1, i)) + fmt.Fprintf(f, " Map[%s],\n", joinAll(", ")(extra, A.From("T1", generateNestedCallbacksPlain(1, i)))) // the apply calls for j := 2; j <= i; j++ { - fmt.Fprintf(f, " Ap[%s, T%d],\n", generateNestedCallbacksPlain(j, i), j) + fmt.Fprintf(f, " Ap[%s],\n", joinAll(", ")(A.Of(generateNestedCallbacksPlain(j, i)), extra, A.Of(fmt.Sprintf("T%d", j)))) } // function parameters @@ -383,18 +383,18 @@ func generateGenericTraverseTuple( return fmt.Sprintf("f%d F%d", j+1, j+1) }) // return type - paramType := fmt.Sprintf("tuple.Tuple%d[%s]", i, joinAll(", ")(extra, typesA)) - returnType := nonGenericType(fmt.Sprintf("tuple.Tuple%d[%s]", i, joinAll(", ")(extra, typesT))) + paramType := fmt.Sprintf("tuple.Tuple%d[%s]", i, joinAll(", ")(typesA)) + returnType := nonGenericType(fmt.Sprintf("tuple.Tuple%d[%s]", i, joinAll(", ")(typesT))) // non generic version fmt.Fprintf(f, "\n// TraverseTuple%d converts a [%s] into a [%s]\n", i, paramType, returnType) fmt.Fprintf(f, "func TraverseTuple%d[%s any](%s) func(%s) %s {\n", i, joinAll(", ")(extra, typesF, typesT, typesA), joinAll(", ")(paramF), paramType, returnType) fmt.Fprintf(f, " return func(t %s) %s {\n", paramType, returnType) fmt.Fprintf(f, " return apply.TraverseTuple%d(\n", i) - fmt.Fprintf(f, " Map[%s, %s],\n", "T1", generateNestedCallbacksPlain(1, i)) + fmt.Fprintf(f, " Map[%s],\n", joinAll(", ")(extra, A.From("T1", generateNestedCallbacksPlain(1, i)))) // the apply calls for j := 2; j <= i; j++ { - fmt.Fprintf(f, " Ap[%s, T%d],\n", generateNestedCallbacksPlain(j, i), j) + fmt.Fprintf(f, " Ap[%s],\n", joinAll(", ")(A.Of(generateNestedCallbacksPlain(j, i)), extra, A.Of(fmt.Sprintf("T%d", j)))) } // the function parameters for j := 1; j <= i; j++ { diff --git a/v2/io/gen.go b/v2/io/gen.go index f2e8279..0824c32 100644 --- a/v2/io/gen.go +++ b/v2/io/gen.go @@ -1,6 +1,6 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2025-03-04 23:25:32.6587952 +0100 CET m=+0.002669801 +// 2025-03-05 00:00:52.4586817 +0100 CET m=+0.002590501 package io diff --git a/v2/ioeither/gen.go b/v2/ioeither/gen.go index b8b8222..2089b2b 100644 --- a/v2/ioeither/gen.go +++ b/v2/ioeither/gen.go @@ -1,485 +1,682 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2024-02-29 16:19:13.144922 +0100 CET m=+0.065757301 +// 2025-03-04 23:59:33.8343102 +0100 CET m=+0.003180601 package ioeither + import ( - G "github.com/IBM/fp-go/v2/ioeither/generic" - T "github.com/IBM/fp-go/v2/tuple" + G "github.com/IBM/fp-go/v2/ioeither/generic" + "github.com/IBM/fp-go/v2/internal/apply" + "github.com/IBM/fp-go/v2/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]]] +// SequenceT1 converts 1 [IOEither[E, T]] into a [IOEither[E, tuple.Tuple1[T1]]] func SequenceT1[E, T1 any]( - t1 IOEither[E, T1], -) IOEither[E, T.Tuple1[T1]] { - return G.SequenceT1[ - IOEither[E, T.Tuple1[T1]], - IOEither[E, T1], - ](t1) + t1 IOEither[E, T1], +) IOEither[E, tuple.Tuple1[T1]] { + return apply.SequenceT1( + Map[E, T1, tuple.Tuple1[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) +// SequenceTuple1 converts a [tuple.Tuple1[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple1[T1]]] +func SequenceTuple1[E, T1 any](t tuple.Tuple1[IOEither[E, T1]]) IOEither[E, tuple.Tuple1[T1]] { + return apply.SequenceTuple1( + Map[E, T1, tuple.Tuple1[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) +// TraverseTuple1 converts a [tuple.Tuple1[A1]] into a [IOEither[E, tuple.Tuple1[T1]]] +func TraverseTuple1[E, F1 ~func(A1) IOEither[E, T1], T1, A1 any](f1 F1) func(tuple.Tuple1[A1]) IOEither[E, tuple.Tuple1[T1]] { + return func(t tuple.Tuple1[A1]) IOEither[E, tuple.Tuple1[T1]] { + return apply.TraverseTuple1( + Map[E, T1, tuple.Tuple1[T1]], + f1, + t, + ) + } } // 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]]] +// SequenceT2 converts 2 [IOEither[E, T]] into a [IOEither[E, tuple.Tuple2[T1, T2]]] func SequenceT2[E, T1, T2 any]( - 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) + t1 IOEither[E, T1], + t2 IOEither[E, T2], +) IOEither[E, tuple.Tuple2[T1, T2]] { + return apply.SequenceT2( + Map[E, T1, func(T2) tuple.Tuple2[T1, T2]], + Ap[tuple.Tuple2[T1, T2], 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) +// SequenceTuple2 converts a [tuple.Tuple2[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple2[T1, T2]]] +func SequenceTuple2[E, T1, T2 any](t tuple.Tuple2[IOEither[E, T1], IOEither[E, T2]]) IOEither[E, tuple.Tuple2[T1, T2]] { + return apply.SequenceTuple2( + Map[E, T1, func(T2) tuple.Tuple2[T1, T2]], + Ap[tuple.Tuple2[T1, T2], 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) +// TraverseTuple2 converts a [tuple.Tuple2[A1, A2]] into a [IOEither[E, tuple.Tuple2[T1, T2]]] +func TraverseTuple2[E, F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], T1, T2, A1, A2 any](f1 F1, f2 F2) func(tuple.Tuple2[A1, A2]) IOEither[E, tuple.Tuple2[T1, T2]] { + return func(t tuple.Tuple2[A1, A2]) IOEither[E, tuple.Tuple2[T1, T2]] { + return apply.TraverseTuple2( + Map[E, T1, func(T2) tuple.Tuple2[T1, T2]], + Ap[tuple.Tuple2[T1, T2], E, T2], + f1, + f2, + t, + ) + } } // 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]]] +// SequenceT3 converts 3 [IOEither[E, T]] into a [IOEither[E, tuple.Tuple3[T1, T2, T3]]] func SequenceT3[E, T1, T2, T3 any]( - 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) + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], +) IOEither[E, tuple.Tuple3[T1, T2, T3]] { + return apply.SequenceT3( + Map[E, T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]], + Ap[func(T3) tuple.Tuple3[T1, T2, T3], E, T2], + Ap[tuple.Tuple3[T1, T2, T3], 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) +// SequenceTuple3 converts a [tuple.Tuple3[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple3[T1, T2, T3]]] +func SequenceTuple3[E, T1, T2, T3 any](t tuple.Tuple3[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3]]) IOEither[E, tuple.Tuple3[T1, T2, T3]] { + return apply.SequenceTuple3( + Map[E, T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]], + Ap[func(T3) tuple.Tuple3[T1, T2, T3], E, T2], + Ap[tuple.Tuple3[T1, T2, T3], 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) +// TraverseTuple3 converts a [tuple.Tuple3[A1, A2, A3]] into a [IOEither[E, tuple.Tuple3[T1, T2, T3]]] +func TraverseTuple3[E, F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], T1, T2, T3, A1, A2, A3 any](f1 F1, f2 F2, f3 F3) func(tuple.Tuple3[A1, A2, A3]) IOEither[E, tuple.Tuple3[T1, T2, T3]] { + return func(t tuple.Tuple3[A1, A2, A3]) IOEither[E, tuple.Tuple3[T1, T2, T3]] { + return apply.TraverseTuple3( + Map[E, T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]], + Ap[func(T3) tuple.Tuple3[T1, T2, T3], E, T2], + Ap[tuple.Tuple3[T1, T2, T3], E, T3], + f1, + f2, + f3, + t, + ) + } } // 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]]] +// SequenceT4 converts 4 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], +) IOEither[E, tuple.Tuple4[T1, T2, T3, T4]] { + return apply.SequenceT4( + Map[E, T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T3], + Ap[tuple.Tuple4[T1, T2, T3, T4], 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) +// SequenceTuple4 converts a [tuple.Tuple4[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple4[T1, T2, T3, T4]]] +func SequenceTuple4[E, T1, T2, T3, T4 any](t tuple.Tuple4[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4]]) IOEither[E, tuple.Tuple4[T1, T2, T3, T4]] { + return apply.SequenceTuple4( + Map[E, T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T3], + Ap[tuple.Tuple4[T1, T2, T3, T4], 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) +// TraverseTuple4 converts a [tuple.Tuple4[A1, A2, A3, A4]] into a [IOEither[E, tuple.Tuple4[T1, T2, T3, T4]]] +func TraverseTuple4[E, F1 ~func(A1) IOEither[E, T1], F2 ~func(A2) IOEither[E, T2], F3 ~func(A3) IOEither[E, T3], F4 ~func(A4) IOEither[E, T4], T1, T2, T3, T4, A1, A2, A3, A4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(tuple.Tuple4[A1, A2, A3, A4]) IOEither[E, tuple.Tuple4[T1, T2, T3, T4]] { + return func(t tuple.Tuple4[A1, A2, A3, A4]) IOEither[E, tuple.Tuple4[T1, T2, T3, T4]] { + return apply.TraverseTuple4( + Map[E, T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]], + Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T2], + Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], E, T3], + Ap[tuple.Tuple4[T1, T2, T3, T4], E, T4], + f1, + f2, + f3, + f4, + t, + ) + } } // 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]]] +// SequenceT5 converts 5 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + t1 IOEither[E, T1], + t2 IOEither[E, T2], + t3 IOEither[E, T3], + t4 IOEither[E, T4], + t5 IOEither[E, T5], +) IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]] { + return apply.SequenceT5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[tuple.Tuple5[T1, T2, T3, T4, T5], 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) +// SequenceTuple5 converts a [tuple.Tuple5[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]]] +func SequenceTuple5[E, T1, T2, T3, T4, T5 any](t tuple.Tuple5[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5]]) IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]] { + return apply.SequenceTuple5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[tuple.Tuple5[T1, T2, T3, T4, T5], 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) +// TraverseTuple5 converts a [tuple.Tuple5[A1, A2, A3, A4, A5]] into a [IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]]] +func TraverseTuple5[E, 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], T1, T2, T3, T4, T5, A1, A2, A3, A4, A5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(tuple.Tuple5[A1, A2, A3, A4, A5]) IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]] { + return func(t tuple.Tuple5[A1, A2, A3, A4, A5]) IOEither[E, tuple.Tuple5[T1, T2, T3, T4, T5]] { + return apply.TraverseTuple5( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5]], + Ap[func(T3) func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T2], + Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T3], + Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], E, T4], + Ap[tuple.Tuple5[T1, T2, T3, T4, T5], E, T5], + f1, + f2, + f3, + f4, + f5, + t, + ) + } } // 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]]] +// SequenceT6 converts 6 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + 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, tuple.Tuple6[T1, T2, T3, T4, T5, T6]] { + return apply.SequenceT6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], 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) +// SequenceTuple6 converts a [tuple.Tuple6[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple6[T1, T2, T3, T4, T5, T6]]] +func SequenceTuple6[E, T1, T2, T3, T4, T5, T6 any](t tuple.Tuple6[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6]]) IOEither[E, tuple.Tuple6[T1, T2, T3, T4, T5, T6]] { + return apply.SequenceTuple6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], 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) +// TraverseTuple6 converts a [tuple.Tuple6[A1, A2, A3, A4, A5, A6]] into a [IOEither[E, tuple.Tuple6[T1, T2, T3, T4, T5, T6]]] +func TraverseTuple6[E, 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], T1, T2, T3, T4, T5, T6, A1, A2, A3, A4, A5, A6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IOEither[E, tuple.Tuple6[T1, T2, T3, T4, T5, T6]] { + return func(t tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IOEither[E, tuple.Tuple6[T1, T2, T3, T4, T5, T6]] { + return apply.TraverseTuple6( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6]], + Ap[func(T3) func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T2], + Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T3], + Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T4], + Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T5], + Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], E, T6], + f1, + f2, + f3, + f4, + f5, + f6, + t, + ) + } } // 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]]] +// SequenceT7 converts 7 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + 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, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return apply.SequenceT7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], 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) +// SequenceTuple7 converts a [tuple.Tuple7[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] +func SequenceTuple7[E, T1, T2, T3, T4, T5, T6, T7 any](t tuple.Tuple7[IOEither[E, T1], IOEither[E, T2], IOEither[E, T3], IOEither[E, T4], IOEither[E, T5], IOEither[E, T6], IOEither[E, T7]]) IOEither[E, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return apply.SequenceTuple7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], 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) +// TraverseTuple7 converts a [tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]] into a [IOEither[E, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] +func TraverseTuple7[E, 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], T1, T2, T3, T4, T5, T6, T7, A1, A2, A3, A4, A5, A6, A7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOEither[E, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return func(t tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOEither[E, tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] { + return apply.TraverseTuple7( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T3], + Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T4], + Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T5], + Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T6], + Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], E, T7], + f1, + f2, + f3, + f4, + f5, + f6, + f7, + t, + ) + } } // 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]]] +// SequenceT8 converts 8 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + 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, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return apply.SequenceT8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], 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) +// SequenceTuple8 converts a [tuple.Tuple8[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] +func SequenceTuple8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t tuple.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, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return apply.SequenceTuple8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], 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) +// TraverseTuple8 converts a [tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]] into a [IOEither[E, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] +func TraverseTuple8[E, 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], T1, T2, T3, T4, T5, T6, T7, T8, A1, A2, A3, A4, A5, A6, A7, A8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOEither[E, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return func(t tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOEither[E, tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] { + return apply.TraverseTuple8( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], + Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T2], + Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T4], + Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T5], + Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T6], + Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], E, T7], + Ap[tuple.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 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]]] +// SequenceT9 converts 9 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + 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, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return apply.SequenceT9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) tuple.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) tuple.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) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], 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) +// SequenceTuple9 converts a [tuple.Tuple9[IOEither[E, T]]] into a [IOEither[E, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] +func SequenceTuple9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t tuple.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, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return apply.SequenceTuple9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) tuple.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) tuple.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) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], 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) +// TraverseTuple9 converts a [tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]] into a [IOEither[E, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] +func TraverseTuple9[E, 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], T1, T2, T3, T4, T5, T6, T7, T8, T9, A1, A2, A3, A4, A5, A6, A7, A8, A9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IOEither[E, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return func(t tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IOEither[E, tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] { + return apply.TraverseTuple9( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) tuple.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) tuple.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) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T3], + Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T5], + Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T6], + Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T7], + Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], E, T8], + Ap[tuple.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 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]]] +// SequenceT10 converts 10 [IOEither[E, T]] into a [IOEither[E, tuple.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], -) 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) + 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, tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return apply.SequenceT10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) tuple.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) tuple.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) tuple.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) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[tuple.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 [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) +// SequenceTuple10 converts a [tuple.Tuple10[IOEither[E, T]]] into a [IOEither[E, tuple.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 tuple.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, tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return apply.SequenceTuple10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) tuple.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) tuple.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) tuple.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) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], 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) +// TraverseTuple10 converts a [tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]] into a [IOEither[E, tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] +func TraverseTuple10[E, 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], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IOEither[E, tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return func(t tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IOEither[E, tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] { + return apply.TraverseTuple10( + Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) tuple.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) tuple.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) tuple.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) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T4], + Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T5], + Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T6], + Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T7], + Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T8], + Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], E, T9], + Ap[tuple.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/v2/ioeither/generic/gen.go b/v2/ioeither/generic/gen.go index c52aa70..1e7dbba 100644 --- a/v2/ioeither/generic/gen.go +++ b/v2/ioeither/generic/gen.go @@ -1,1017 +1,185 @@ // Code generated by go generate; DO NOT EDIT. // This file was generated by robots at -// 2024-02-29 16:19:13.1643755 +0100 CET m=+0.085210801 +// 2025-03-04 23:59:33.8343102 +0100 CET m=+0.003180601 package generic + import ( - "github.com/IBM/fp-go/v2/either" - A "github.com/IBM/fp-go/v2/internal/apply" - T "github.com/IBM/fp-go/v2/tuple" + ET "github.com/IBM/fp-go/v2/either" ) // Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA] -func Eitherize0[GIOA ~func() Either[error, R], F ~func() (R, error), R any](f F) func() GIOA { - e := either.Eitherize0(f) - return func() GIOA { - return func() Either[error, R] { - return e() - } - } +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() + }} } // Uneitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA] -func Uneitherize0[GIOA ~func() Either[error, R], GTA ~func() GIOA, R any](f GTA) func() (R, error) { - return func() (R, error) { - return either.Unwrap(f()()) - } +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()()) + } } // Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA] -func Eitherize1[GIOA ~func() Either[error, R], F ~func(T1) (R, error), T1, R any](f F) func(T1) GIOA { - e := either.Eitherize1(f) - return func(t1 T1) GIOA { - return func() Either[error, R] { - return e(t1) - } - } +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) + }} } // Uneitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA] -func Uneitherize1[GIOA ~func() Either[error, R], GTA ~func(T1) GIOA, T1, R any](f GTA) func(T1) (R, error) { - return func(t1 T1) (R, error) { - return either.Unwrap(f(t1)()) - } -} - -// SequenceT1 converts 1 [func() Either[E, T]] into a [func() Either[E, T.Tuple1[T1]]] -func SequenceT1[ - G_TUPLE1 ~func() Either[E, T.Tuple1[T1]], - G_T1 ~func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple1[T1]]] -func SequenceTuple1[ - G_TUPLE1 ~func() Either[E, T.Tuple1[T1]], - G_T1 ~func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple1[T1]]] -func TraverseTuple1[ - G_TUPLE1 ~func() Either[E, T.Tuple1[T1]], - F1 ~func(A1) G_T1, - G_T1 ~func() 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) - } +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)()) + } } // Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA] -func Eitherize2[GIOA ~func() Either[error, R], F ~func(T1, T2) (R, error), T1, T2, R any](f F) func(T1, T2) GIOA { - e := either.Eitherize2(f) - return func(t1 T1, t2 T2) GIOA { - return func() Either[error, R] { - return e(t1, t2) - } - } +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) + }} } // Uneitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA] -func Uneitherize2[GIOA ~func() 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 either.Unwrap(f(t1, t2)()) - } -} - -// SequenceT2 converts 2 [func() Either[E, T]] into a [func() Either[E, T.Tuple2[T1, T2]]] -func SequenceT2[ - G_TUPLE2 ~func() Either[E, T.Tuple2[T1, T2]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - E, T1, T2 any]( - t1 G_T1, - t2 G_T2, -) G_TUPLE2 { - return A.SequenceT2( - Map[G_T1, func() Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - t1, - t2, - ) -} - -// SequenceTuple2 converts a [T.Tuple2[func() Either[E, T]]] into a [func() Either[E, T.Tuple2[T1, T2]]] -func SequenceTuple2[ - G_TUPLE2 ~func() Either[E, T.Tuple2[T1, T2]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - E, T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 { - return A.SequenceTuple2( - Map[G_T1, func() Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - t) -} - -// TraverseTuple2 converts a [T.Tuple2[func() Either[E, T]]] into a [func() Either[E, T.Tuple2[T1, T2]]] -func TraverseTuple2[ - G_TUPLE2 ~func() Either[E, T.Tuple2[T1, T2]], - F1 ~func(A1) G_T1, - F2 ~func(A2) G_T2, - G_T1 ~func() Either[E, T1], - G_T2 ~func() 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() Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]], - Ap[G_TUPLE2, func() Either[E, func(T2) T.Tuple2[T1, T2]], G_T2], - f1, - f2, - t) - } +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)()) + } } // Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA] -func Eitherize3[GIOA ~func() Either[error, R], F ~func(T1, T2, T3) (R, error), T1, T2, T3, R any](f F) func(T1, T2, T3) GIOA { - e := either.Eitherize3(f) - return func(t1 T1, t2 T2, t3 T3) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3) - } - } +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) + }} } // Uneitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA] -func Uneitherize3[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3)()) - } -} - -// SequenceT3 converts 3 [func() Either[E, T]] into a [func() Either[E, T.Tuple3[T1, T2, T3]]] -func SequenceT3[ - G_TUPLE3 ~func() Either[E, T.Tuple3[T1, T2, T3]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() 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() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t1, - t2, - t3, - ) -} - -// SequenceTuple3 converts a [T.Tuple3[func() Either[E, T]]] into a [func() Either[E, T.Tuple3[T1, T2, T3]]] -func SequenceTuple3[ - G_TUPLE3 ~func() Either[E, T.Tuple3[T1, T2, T3]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() 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() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - t) -} - -// TraverseTuple3 converts a [T.Tuple3[func() Either[E, T]]] into a [func() Either[E, T.Tuple3[T1, T2, T3]]] -func TraverseTuple3[ - G_TUPLE3 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() 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() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]], - Ap[func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2], - Ap[G_TUPLE3, func() Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3], - f1, - f2, - f3, - t) - } +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)()) + } } // Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA] -func Eitherize4[GIOA ~func() 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 := either.Eitherize4(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3, t4) - } - } +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) + }} } // Uneitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA] -func Uneitherize4[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4)()) - } -} - -// SequenceT4 converts 4 [func() Either[E, T]] into a [func() Either[E, T.Tuple4[T1, T2, T3, T4]]] -func SequenceT4[ - G_TUPLE4 ~func() Either[E, T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() 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() 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() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t1, - t2, - t3, - t4, - ) -} - -// SequenceTuple4 converts a [T.Tuple4[func() Either[E, T]]] into a [func() Either[E, T.Tuple4[T1, T2, T3, T4]]] -func SequenceTuple4[ - G_TUPLE4 ~func() Either[E, T.Tuple4[T1, T2, T3, T4]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() 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() 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() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - t) -} - -// TraverseTuple4 converts a [T.Tuple4[func() Either[E, T]]] into a [func() Either[E, T.Tuple4[T1, T2, T3, T4]]] -func TraverseTuple4[ - G_TUPLE4 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() 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() 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() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2], - Ap[func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3], - Ap[G_TUPLE4, func() Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4], - f1, - f2, - f3, - f4, - t) - } +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)()) + } } // Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA] -func Eitherize5[GIOA ~func() 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 := either.Eitherize5(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3, t4, t5) - } - } +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) + }} } // Uneitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA] -func Uneitherize5[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5)()) - } -} - -// SequenceT5 converts 5 [func() Either[E, T]] into a [func() Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] -func SequenceT5[ - G_TUPLE5 ~func() Either[E, T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t1, - t2, - t3, - t4, - t5, - ) -} - -// SequenceTuple5 converts a [T.Tuple5[func() Either[E, T]]] into a [func() Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] -func SequenceTuple5[ - G_TUPLE5 ~func() Either[E, T.Tuple5[T1, T2, T3, T4, T5]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - t) -} - -// TraverseTuple5 converts a [T.Tuple5[func() Either[E, T]]] into a [func() Either[E, T.Tuple5[T1, T2, T3, T4, T5]]] -func TraverseTuple5[ - G_TUPLE5 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2], - Ap[func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3], - Ap[func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4], - Ap[G_TUPLE5, func() Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5], - f1, - f2, - f3, - f4, - f5, - t) - } +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)()) + } } // Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA] -func Eitherize6[GIOA ~func() 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 := either.Eitherize6(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3, t4, t5, t6) - } - } +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) + }} } // Uneitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA] -func Uneitherize6[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5, t6)()) - } -} - -// SequenceT6 converts 6 [func() Either[E, T]] into a [func() Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] -func SequenceT6[ - G_TUPLE6 ~func() Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] -func SequenceTuple6[ - G_TUPLE6 ~func() Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - t) -} - -// TraverseTuple6 converts a [T.Tuple6[func() Either[E, T]]] into a [func() Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]] -func TraverseTuple6[ - G_TUPLE6 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2], - Ap[func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3], - Ap[func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4], - Ap[func() Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5], - Ap[G_TUPLE6, func() Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6], - f1, - f2, - f3, - f4, - f5, - f6, - t) - } +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)()) + } } // Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA] -func Eitherize7[GIOA ~func() 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 := either.Eitherize7(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7) - } - } +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) + }} } // Uneitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA] -func Uneitherize7[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5, t6, t7)()) - } -} - -// SequenceT7 converts 7 [func() Either[E, T]] into a [func() Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] -func SequenceT7[ - G_TUPLE7 ~func() Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] -func SequenceTuple7[ - G_TUPLE7 ~func() Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - t) -} - -// TraverseTuple7 converts a [T.Tuple7[func() Either[E, T]]] into a [func() Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]] -func TraverseTuple7[ - G_TUPLE7 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() 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() 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() Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() 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() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4], - Ap[func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5], - Ap[func() Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6], - Ap[G_TUPLE7, func() Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7], - f1, - f2, - f3, - f4, - f5, - f6, - f7, - t) - } +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)()) + } } // Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA] -func Eitherize8[GIOA ~func() 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 := either.Eitherize8(f) - return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA { - return func() Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8) - } - } +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) + }} } // Uneitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA] -func Uneitherize8[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8)()) - } -} - -// SequenceT8 converts 8 [func() Either[E, T]] into a [func() Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] -func SequenceT8[ - G_TUPLE8 ~func() Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() 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() 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() 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() 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() Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] -func SequenceTuple8[ - G_TUPLE8 ~func() Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() 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() 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() 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() 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() Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8], - t) -} - -// TraverseTuple8 converts a [T.Tuple8[func() Either[E, T]]] into a [func() Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]] -func TraverseTuple8[ - G_TUPLE8 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() 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() 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() 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() 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() Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() 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() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5], - Ap[func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6], - Ap[func() Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7], - Ap[G_TUPLE8, func() 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) - } +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)()) + } } // Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA] -func Eitherize9[GIOA ~func() 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 := either.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() Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8, t9) - } - } +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) + }} } // Uneitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA] -func Uneitherize9[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9)()) - } -} - -// SequenceT9 converts 9 [func() Either[E, T]] into a [func() Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] -func SequenceT9[ - G_TUPLE9 ~func() Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() 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() 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() 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() 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() 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() 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() Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] -func SequenceTuple9[ - G_TUPLE9 ~func() Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() 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() 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() 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() 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() 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() 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() Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9], - t) -} - -// TraverseTuple9 converts a [T.Tuple9[func() Either[E, T]]] into a [func() Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]] -func TraverseTuple9[ - G_TUPLE9 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() 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() 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() 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() 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() 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() 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() Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() 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() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7], - Ap[func() Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8], - Ap[G_TUPLE9, func() 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) - } +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)()) + } } // Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA] -func Eitherize10[GIOA ~func() 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 := either.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() Either[error, R] { - return e(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) - } - } +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) + }} } // Uneitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA] -func Uneitherize10[GIOA ~func() 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 either.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)()) - } -} - -// SequenceT10 converts 10 [func() Either[E, T]] into a [func() Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] -func SequenceT10[ - G_TUPLE10 ~func() Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() Either[E, T9], - G_T10 ~func() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] -func SequenceTuple10[ - G_TUPLE10 ~func() Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], - G_T1 ~func() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() Either[E, T9], - G_T10 ~func() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() 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() Either[E, T]]] into a [func() Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]] -func TraverseTuple10[ - G_TUPLE10 ~func() 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() Either[E, T1], - G_T2 ~func() Either[E, T2], - G_T3 ~func() Either[E, T3], - G_T4 ~func() Either[E, T4], - G_T5 ~func() Either[E, T5], - G_T6 ~func() Either[E, T6], - G_T7 ~func() Either[E, T7], - G_T8 ~func() Either[E, T8], - G_T9 ~func() Either[E, T9], - G_T10 ~func() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() 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() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8], - Ap[func() Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9], - Ap[G_TUPLE10, func() 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) - } +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)()) + } } diff --git a/v2/iooption/generic/sync.go b/v2/iooption/generic/sync.go deleted file mode 100644 index 12da977..0000000 --- a/v2/iooption/generic/sync.go +++ /dev/null @@ -1,28 +0,0 @@ -// 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" - - G "github.com/IBM/fp-go/v2/io/generic" - O "github.com/IBM/fp-go/v2/option" -) - -// WithLock executes the provided IO operation in the scope of a lock -func WithLock[GA ~func() O.Option[A], A any](lock func() context.CancelFunc) func(fa GA) GA { - return G.WithLock[GA](lock) -} diff --git a/v2/iooption/sync.go b/v2/iooption/sync.go index dd27808..dc1086c 100644 --- a/v2/iooption/sync.go +++ b/v2/iooption/sync.go @@ -18,11 +18,11 @@ package iooption import ( "context" - IO "github.com/IBM/fp-go/v2/io" - G "github.com/IBM/fp-go/v2/iooption/generic" + "github.com/IBM/fp-go/v2/io" + "github.com/IBM/fp-go/v2/option" ) // WithLock executes the provided IO operation in the scope of a lock -func WithLock[E, A any](lock IO.IO[context.CancelFunc]) func(fa IOOption[A]) IOOption[A] { - return G.WithLock[IOOption[A]](lock) +func WithLock[E, A any](lock io.IO[context.CancelFunc]) func(fa IOOption[A]) IOOption[A] { + return io.WithLock[option.Option[A]](lock) } diff --git a/v2/readerio/generic/sync.go b/v2/readerio/generic/sync.go deleted file mode 100644 index 9c397e2..0000000 --- a/v2/readerio/generic/sync.go +++ /dev/null @@ -1,34 +0,0 @@ -// 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" - - F "github.com/IBM/fp-go/v2/function" - G "github.com/IBM/fp-go/v2/io/generic" -) - -// WithLock executes the provided IO operation in the scope of a lock -func WithLock[GEA ~func(R) GIOA, GIOA ~func() A, R, A any](lock func() context.CancelFunc) func(fa GEA) GEA { - l := G.WithLock[GIOA](lock) - return func(fa GEA) GEA { - return F.Flow2( - fa, - l, - ) - } -} diff --git a/v2/readerio/sync.go b/v2/readerio/sync.go index 9bb0e94..f4f1256 100644 --- a/v2/readerio/sync.go +++ b/v2/readerio/sync.go @@ -18,10 +18,17 @@ package readerio import ( "context" - G "github.com/IBM/fp-go/v2/readerio/generic" + "github.com/IBM/fp-go/v2/function" + "github.com/IBM/fp-go/v2/io" ) // WithLock executes the provided IO operation in the scope of a lock func WithLock[R, A any](lock func() context.CancelFunc) func(fa ReaderIO[R, A]) ReaderIO[R, A] { - return G.WithLock[ReaderIO[R, A]](lock) + l := io.WithLock[A](lock) + return func(fa ReaderIO[R, A]) ReaderIO[R, A] { + return function.Flow2( + fa, + l, + ) + } } diff --git a/v2/readerioeither/generic/sync.go b/v2/readerioeither/generic/sync.go deleted file mode 100644 index b75f134..0000000 --- a/v2/readerioeither/generic/sync.go +++ /dev/null @@ -1,28 +0,0 @@ -// 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" - - "github.com/IBM/fp-go/v2/either" - G "github.com/IBM/fp-go/v2/readerio/generic" -) - -// WithLock executes the provided IO operation in the scope of a lock -func WithLock[GEA ~func(R) GIOA, GIOA ~func() either.Either[E, A], R, E, A any](lock func() context.CancelFunc) func(fa GEA) GEA { - return G.WithLock[GEA](lock) -} diff --git a/v2/readerioeither/sync.go b/v2/readerioeither/sync.go index e3cba82..3da8cac 100644 --- a/v2/readerioeither/sync.go +++ b/v2/readerioeither/sync.go @@ -18,10 +18,11 @@ package readerioeither import ( "context" - G "github.com/IBM/fp-go/v2/readerioeither/generic" + "github.com/IBM/fp-go/v2/either" + "github.com/IBM/fp-go/v2/readerio" ) // WithLock executes the provided IO operation in the scope of a lock func WithLock[R, E, A any](lock func() context.CancelFunc) func(fa ReaderIOEither[R, E, A]) ReaderIOEither[R, E, A] { - return G.WithLock[ReaderIOEither[R, E, A]](lock) + return readerio.WithLock[R, either.Either[E, A]](lock) }