2023-07-27 22:39:38 +02:00
|
|
|
// Code generated by go generate; DO NOT EDIT.
|
|
|
|
// This file was generated by robots at
|
2023-10-23 08:25:45 +02:00
|
|
|
// 2023-10-23 08:30:58.6556525 +0200 CEST m=+0.090214601
|
2023-07-27 22:39:38 +02:00
|
|
|
package generic
|
|
|
|
|
|
|
|
import (
|
|
|
|
ET "github.com/IBM/fp-go/either"
|
2023-10-23 08:25:45 +02:00
|
|
|
A "github.com/IBM/fp-go/internal/apply"
|
2023-10-24 12:27:10 +02:00
|
|
|
T "github.com/IBM/fp-go/tuple"
|
2023-07-27 22:39:38 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA]
|
|
|
|
func Eitherize0[GIOA ~func() ET.Either[error, R], F ~func() (R, error), R any](f F) func() GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
e := ET.Eitherize0(f)
|
|
|
|
return func() GIOA {
|
|
|
|
return func() ET.Either[error, R] {
|
|
|
|
return e()
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA]
|
|
|
|
func Uneitherize0[GIOA ~func() ET.Either[error, R], GTA ~func() GIOA, R any](f GTA) func() (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func() (R, error) {
|
|
|
|
return ET.Unwrap(f()())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA]
|
|
|
|
func Eitherize1[GIOA ~func() ET.Either[error, R], F ~func(T1) (R, error), T1, R any](f F) func(T1) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
e := ET.Eitherize1(f)
|
|
|
|
return func(t1 T1) GIOA {
|
|
|
|
return func() ET.Either[error, R] {
|
|
|
|
return e(t1)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA]
|
|
|
|
func Uneitherize1[GIOA ~func() ET.Either[error, R], GTA ~func(T1) GIOA, T1, R any](f GTA) func(T1) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func(t1 T1) (R, error) {
|
|
|
|
return ET.Unwrap(f(t1)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT1 converts 1 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple1[T1]]]
|
|
|
|
func SequenceT1[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
E, T1 any](
|
|
|
|
t1 G_T1,
|
|
|
|
) G_TUPLE1 {
|
|
|
|
return A.SequenceT1(
|
|
|
|
Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]],
|
|
|
|
t1,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple1 converts a [T.Tuple1[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple1[T1]]]
|
|
|
|
func SequenceTuple1[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
E, T1 any](t T.Tuple1[G_T1]) G_TUPLE1 {
|
|
|
|
return A.SequenceTuple1(
|
|
|
|
Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple1 converts a [T.Tuple1[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple1[T1]]]
|
|
|
|
func TraverseTuple1[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE1 ~func() ET.Either[E, T.Tuple1[T1]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
E, A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1 {
|
|
|
|
return func(t T.Tuple1[A1]) G_TUPLE1 {
|
|
|
|
return A.TraverseTuple1(
|
|
|
|
Map[G_T1, G_TUPLE1, E, T1, T.Tuple1[T1]],
|
|
|
|
f1,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA]
|
|
|
|
func Eitherize2[GIOA ~func() ET.Either[error, R], F ~func(T1, T2) (R, error), T1, T2, R any](f F) func(T1, T2) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
e := ET.Eitherize2(f)
|
|
|
|
return func(t1 T1, t2 T2) GIOA {
|
|
|
|
return func() ET.Either[error, R] {
|
|
|
|
return e(t1, t2)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA]
|
|
|
|
func Uneitherize2[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2) GIOA, T1, T2, R any](f GTA) func(T1, T2) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func(t1 T1, t2 T2) (R, error) {
|
|
|
|
return ET.Unwrap(f(t1, t2)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT2 converts 2 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]]
|
|
|
|
func SequenceT2[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
E, T1, T2 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
) G_TUPLE2 {
|
|
|
|
return A.SequenceT2(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]],
|
|
|
|
Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple2 converts a [T.Tuple2[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]]
|
|
|
|
func SequenceTuple2[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
E, T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2 {
|
|
|
|
return A.SequenceTuple2(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]],
|
|
|
|
Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple2 converts a [T.Tuple2[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple2[T1, T2]]]
|
|
|
|
func TraverseTuple2[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE2 ~func() ET.Either[E, T.Tuple2[T1, T2]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
E, A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2 {
|
|
|
|
return func(t T.Tuple2[A1, A2]) G_TUPLE2 {
|
|
|
|
return A.TraverseTuple2(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], E, T1, func(T2) T.Tuple2[T1, T2]],
|
|
|
|
Ap[G_TUPLE2, func() ET.Either[E, func(T2) T.Tuple2[T1, T2]], G_T2],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA]
|
|
|
|
func Eitherize3[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3) (R, error), T1, T2, T3, R any](f F) func(T1, T2, T3) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
e := ET.Eitherize3(f)
|
|
|
|
return func(t1 T1, t2 T2, t3 T3) GIOA {
|
|
|
|
return func() ET.Either[error, R] {
|
|
|
|
return e(t1, t2, t3)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA]
|
|
|
|
func Uneitherize3[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3) GIOA, T1, T2, T3, R any](f GTA) func(T1, T2, T3) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func(t1 T1, t2 T2, t3 T3) (R, error) {
|
|
|
|
return ET.Unwrap(f(t1, t2, t3)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT3 converts 3 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]]
|
|
|
|
func SequenceT3[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
E, T1, T2, T3 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
) G_TUPLE3 {
|
|
|
|
return A.SequenceT3(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2],
|
|
|
|
Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple3 converts a [T.Tuple3[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]]
|
|
|
|
func SequenceTuple3[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
E, T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3 {
|
|
|
|
return A.SequenceTuple3(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2],
|
|
|
|
Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple3 converts a [T.Tuple3[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple3[T1, T2, T3]]]
|
|
|
|
func TraverseTuple3[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE3 ~func() ET.Either[E, T.Tuple3[T1, T2, T3]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
E, A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3 {
|
|
|
|
return func(t T.Tuple3[A1, A2, A3]) G_TUPLE3 {
|
|
|
|
return A.TraverseTuple3(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], func() ET.Either[E, func(T2) func(T3) T.Tuple3[T1, T2, T3]], G_T2],
|
|
|
|
Ap[G_TUPLE3, func() ET.Either[E, func(T3) T.Tuple3[T1, T2, T3]], G_T3],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA]
|
|
|
|
func Eitherize4[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4) (R, error), T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA]
|
|
|
|
func Uneitherize4[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4) GIOA, T1, T2, T3, T4, R any](f GTA) func(T1, T2, T3, T4) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func(t1 T1, t2 T2, t3 T3, t4 T4) (R, error) {
|
|
|
|
return ET.Unwrap(f(t1, t2, t3, t4)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT4 converts 4 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]]
|
|
|
|
func SequenceT4[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
E, T1, T2, T3, T4 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
) G_TUPLE4 {
|
|
|
|
return A.SequenceT4(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3],
|
|
|
|
Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple4 converts a [T.Tuple4[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]]
|
|
|
|
func SequenceTuple4[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
E, T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4 {
|
|
|
|
return A.SequenceTuple4(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3],
|
|
|
|
Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple4 converts a [T.Tuple4[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]]]
|
|
|
|
func TraverseTuple4[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE4 ~func() ET.Either[E, T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
E, A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 {
|
|
|
|
return func(t T.Tuple4[A1, A2, A3, A4]) G_TUPLE4 {
|
|
|
|
return A.TraverseTuple4(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], func() ET.Either[E, func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]], G_T3],
|
|
|
|
Ap[G_TUPLE4, func() ET.Either[E, func(T4) T.Tuple4[T1, T2, T3, T4]], G_T4],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA]
|
|
|
|
func Eitherize5[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5) (R, error), T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA]
|
|
|
|
func Uneitherize5[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5) GIOA, T1, T2, T3, T4, T5, R any](f GTA) func(T1, T2, T3, T4, T5) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) {
|
|
|
|
return ET.Unwrap(f(t1, t2, t3, t4, t5)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT5 converts 5 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]]
|
|
|
|
func SequenceT5[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
E, T1, T2, T3, T4, T5 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
) G_TUPLE5 {
|
|
|
|
return A.SequenceT5(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4],
|
|
|
|
Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple5 converts a [T.Tuple5[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]]
|
|
|
|
func SequenceTuple5[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
E, T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5 {
|
|
|
|
return A.SequenceTuple5(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4],
|
|
|
|
Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple5 converts a [T.Tuple5[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]]]
|
|
|
|
func TraverseTuple5[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE5 ~func() ET.Either[E, T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
E, A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 {
|
|
|
|
return func(t T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5 {
|
|
|
|
return A.TraverseTuple5(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], func() ET.Either[E, func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T4],
|
|
|
|
Ap[G_TUPLE5, func() ET.Either[E, func(T5) T.Tuple5[T1, T2, T3, T4, T5]], G_T5],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA]
|
|
|
|
func Eitherize6[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6) (R, error), T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA]
|
|
|
|
func Uneitherize6[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6) GIOA, T1, T2, T3, T4, T5, T6, R any](f GTA) func(T1, T2, T3, T4, T5, T6) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT6 converts 6 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
|
|
|
func SequenceT6[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
E, T1, T2, T3, T4, T5, T6 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
t6 G_T6,
|
|
|
|
) G_TUPLE6 {
|
|
|
|
return A.SequenceT6(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5],
|
|
|
|
Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
t6,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple6 converts a [T.Tuple6[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
|
|
|
func SequenceTuple6[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
E, T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6 {
|
|
|
|
return A.SequenceTuple6(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5],
|
|
|
|
Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple6 converts a [T.Tuple6[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
|
|
|
func TraverseTuple6[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE6 ~func() ET.Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
F6 ~func(A6) G_T6,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
E, A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 {
|
|
|
|
return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6 {
|
|
|
|
return A.TraverseTuple6(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], func() ET.Either[E, func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T5],
|
|
|
|
Ap[G_TUPLE6, func() ET.Either[E, func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T6],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
f6,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA]
|
|
|
|
func Eitherize7[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7) (R, error), T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA]
|
|
|
|
func Uneitherize7[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7) GIOA, T1, T2, T3, T4, T5, T6, T7, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT7 converts 7 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
|
|
|
func SequenceT7[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
t6 G_T6,
|
|
|
|
t7 G_T7,
|
|
|
|
) G_TUPLE7 {
|
|
|
|
return A.SequenceT7(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6],
|
|
|
|
Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
t6,
|
|
|
|
t7,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple7 converts a [T.Tuple7[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
|
|
|
func SequenceTuple7[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7 {
|
|
|
|
return A.SequenceTuple7(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6],
|
|
|
|
Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple7 converts a [T.Tuple7[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
|
|
|
func TraverseTuple7[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE7 ~func() ET.Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
F6 ~func(A6) G_T6,
|
|
|
|
F7 ~func(A7) G_T7,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
E, A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 {
|
|
|
|
return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7 {
|
|
|
|
return A.TraverseTuple7(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], func() ET.Either[E, func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T6],
|
|
|
|
Ap[G_TUPLE7, func() ET.Either[E, func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T7],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
f6,
|
|
|
|
f7,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA]
|
|
|
|
func Eitherize8[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA]
|
|
|
|
func Uneitherize8[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT8 converts 8 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
|
|
|
func SequenceT8[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
t6 G_T6,
|
|
|
|
t7 G_T7,
|
|
|
|
t8 G_T8,
|
|
|
|
) G_TUPLE8 {
|
|
|
|
return A.SequenceT8(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7],
|
|
|
|
Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
t6,
|
|
|
|
t7,
|
|
|
|
t8,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple8 converts a [T.Tuple8[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
|
|
|
func SequenceTuple8[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8 {
|
|
|
|
return A.SequenceTuple8(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7],
|
|
|
|
Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple8 converts a [T.Tuple8[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
|
|
|
func TraverseTuple8[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE8 ~func() ET.Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
F6 ~func(A6) G_T6,
|
|
|
|
F7 ~func(A7) G_T7,
|
|
|
|
F8 ~func(A8) G_T8,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
E, A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 {
|
|
|
|
return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8 {
|
|
|
|
return A.TraverseTuple8(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], func() ET.Either[E, func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T7],
|
|
|
|
Ap[G_TUPLE8, func() ET.Either[E, func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T8],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
f6,
|
|
|
|
f7,
|
|
|
|
f8,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA]
|
|
|
|
func Eitherize9[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA]
|
|
|
|
func Uneitherize9[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT9 converts 9 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
|
|
|
func SequenceT9[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
t6 G_T6,
|
|
|
|
t7 G_T7,
|
|
|
|
t8 G_T8,
|
|
|
|
t9 G_T9,
|
|
|
|
) G_TUPLE9 {
|
|
|
|
return A.SequenceT9(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8],
|
|
|
|
Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
t6,
|
|
|
|
t7,
|
|
|
|
t8,
|
|
|
|
t9,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple9 converts a [T.Tuple9[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
|
|
|
func SequenceTuple9[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9 {
|
|
|
|
return A.SequenceTuple9(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8],
|
|
|
|
Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple9 converts a [T.Tuple9[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
|
|
|
func TraverseTuple9[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE9 ~func() ET.Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
F6 ~func(A6) G_T6,
|
|
|
|
F7 ~func(A7) G_T7,
|
|
|
|
F8 ~func(A8) G_T8,
|
|
|
|
F9 ~func(A9) G_T9,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
E, A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 {
|
|
|
|
return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9 {
|
|
|
|
return A.TraverseTuple9(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], func() ET.Either[E, func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T8],
|
|
|
|
Ap[G_TUPLE9, func() ET.Either[E, func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T9],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
f6,
|
|
|
|
f7,
|
|
|
|
f8,
|
|
|
|
f9,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA]
|
|
|
|
func Eitherize10[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Uneitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA]
|
|
|
|
func Uneitherize10[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error) {
|
2023-10-24 12:27:10 +02:00
|
|
|
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)())
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceT10 converts 10 [func() ET.Either[E, T]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
|
|
|
func SequenceT10[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
G_T10 ~func() ET.Either[E, T10],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](
|
|
|
|
t1 G_T1,
|
|
|
|
t2 G_T2,
|
|
|
|
t3 G_T3,
|
|
|
|
t4 G_T4,
|
|
|
|
t5 G_T5,
|
|
|
|
t6 G_T6,
|
|
|
|
t7 G_T7,
|
|
|
|
t8 G_T8,
|
|
|
|
t9 G_T9,
|
|
|
|
t10 G_T10,
|
|
|
|
) G_TUPLE10 {
|
|
|
|
return A.SequenceT10(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8],
|
|
|
|
Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9],
|
|
|
|
Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10],
|
|
|
|
t1,
|
|
|
|
t2,
|
|
|
|
t3,
|
|
|
|
t4,
|
|
|
|
t5,
|
|
|
|
t6,
|
|
|
|
t7,
|
|
|
|
t8,
|
|
|
|
t9,
|
|
|
|
t10,
|
|
|
|
)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// SequenceTuple10 converts a [T.Tuple10[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
|
|
|
func SequenceTuple10[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
G_T10 ~func() ET.Either[E, T10],
|
|
|
|
E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10 {
|
|
|
|
return A.SequenceTuple10(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8],
|
|
|
|
Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9],
|
|
|
|
Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10],
|
|
|
|
t)
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// TraverseTuple10 converts a [T.Tuple10[func() ET.Either[E, T]]] into a [func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
|
|
|
func TraverseTuple10[
|
2023-10-24 12:27:10 +02:00
|
|
|
G_TUPLE10 ~func() ET.Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
F1 ~func(A1) G_T1,
|
|
|
|
F2 ~func(A2) G_T2,
|
|
|
|
F3 ~func(A3) G_T3,
|
|
|
|
F4 ~func(A4) G_T4,
|
|
|
|
F5 ~func(A5) G_T5,
|
|
|
|
F6 ~func(A6) G_T6,
|
|
|
|
F7 ~func(A7) G_T7,
|
|
|
|
F8 ~func(A8) G_T8,
|
|
|
|
F9 ~func(A9) G_T9,
|
|
|
|
F10 ~func(A10) G_T10,
|
|
|
|
G_T1 ~func() ET.Either[E, T1],
|
|
|
|
G_T2 ~func() ET.Either[E, T2],
|
|
|
|
G_T3 ~func() ET.Either[E, T3],
|
|
|
|
G_T4 ~func() ET.Either[E, T4],
|
|
|
|
G_T5 ~func() ET.Either[E, T5],
|
|
|
|
G_T6 ~func() ET.Either[E, T6],
|
|
|
|
G_T7 ~func() ET.Either[E, T7],
|
|
|
|
G_T8 ~func() ET.Either[E, T8],
|
|
|
|
G_T9 ~func() ET.Either[E, T9],
|
|
|
|
G_T10 ~func() ET.Either[E, T10],
|
|
|
|
E, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 {
|
|
|
|
return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10 {
|
|
|
|
return A.TraverseTuple10(
|
|
|
|
Map[G_T1, func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
|
|
|
Ap[func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T2],
|
|
|
|
Ap[func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T3],
|
|
|
|
Ap[func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T4],
|
|
|
|
Ap[func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T5],
|
|
|
|
Ap[func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T6],
|
|
|
|
Ap[func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T7],
|
|
|
|
Ap[func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T8],
|
|
|
|
Ap[func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], func() ET.Either[E, func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T9],
|
|
|
|
Ap[G_TUPLE10, func() ET.Either[E, func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T10],
|
|
|
|
f1,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f4,
|
|
|
|
f5,
|
|
|
|
f6,
|
|
|
|
f7,
|
|
|
|
f8,
|
|
|
|
f9,
|
|
|
|
f10,
|
|
|
|
t)
|
|
|
|
}
|
2023-07-27 22:39:38 +02:00
|
|
|
}
|