mirror of
https://github.com/IBM/fp-go.git
synced 2025-11-23 22:14:53 +02:00
fix: reformat
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
863
v2/io/gen.go
863
v2/io/gen.go
@@ -4,568 +4,567 @@
|
||||
|
||||
package io
|
||||
|
||||
|
||||
import (
|
||||
"github.com/IBM/fp-go/v2/tuple"
|
||||
"github.com/IBM/fp-go/v2/internal/apply"
|
||||
"github.com/IBM/fp-go/v2/tuple"
|
||||
)
|
||||
|
||||
// SequenceT1 converts 1 [IO[T]] into a [IO[tuple.Tuple1[T1]]]
|
||||
func SequenceT1[T1 any](
|
||||
t1 IO[T1],
|
||||
t1 IO[T1],
|
||||
) IO[tuple.Tuple1[T1]] {
|
||||
return apply.SequenceT1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t1,
|
||||
)
|
||||
return apply.SequenceT1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t1,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple1 converts a [tuple.Tuple1[IO[T]]] into a [IO[tuple.Tuple1[T1]]]
|
||||
func SequenceTuple1[T1 any](t tuple.Tuple1[IO[T1]]) IO[tuple.Tuple1[T1]] {
|
||||
return apply.SequenceTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple1 converts a [tuple.Tuple1[A1]] into a [IO[tuple.Tuple1[T1]]]
|
||||
func TraverseTuple1[F1 ~func(A1) IO[T1], T1, A1 any](f1 F1) func(tuple.Tuple1[A1]) IO[tuple.Tuple1[T1]] {
|
||||
return func(t tuple.Tuple1[A1]) IO[tuple.Tuple1[T1]] {
|
||||
return apply.TraverseTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
f1,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple1[A1]) IO[tuple.Tuple1[T1]] {
|
||||
return apply.TraverseTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
f1,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT2 converts 2 [IO[T]] into a [IO[tuple.Tuple2[T1, T2]]]
|
||||
func SequenceT2[T1, T2 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
) IO[tuple.Tuple2[T1, T2]] {
|
||||
return apply.SequenceT2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t1,
|
||||
t2,
|
||||
)
|
||||
return apply.SequenceT2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t1,
|
||||
t2,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple2 converts a [tuple.Tuple2[IO[T]]] into a [IO[tuple.Tuple2[T1, T2]]]
|
||||
func SequenceTuple2[T1, T2 any](t tuple.Tuple2[IO[T1], IO[T2]]) IO[tuple.Tuple2[T1, T2]] {
|
||||
return apply.SequenceTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple2 converts a [tuple.Tuple2[A1, A2]] into a [IO[tuple.Tuple2[T1, T2]]]
|
||||
func TraverseTuple2[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], T1, T2, A1, A2 any](f1 F1, f2 F2) func(tuple.Tuple2[A1, A2]) IO[tuple.Tuple2[T1, T2]] {
|
||||
return func(t tuple.Tuple2[A1, A2]) IO[tuple.Tuple2[T1, T2]] {
|
||||
return apply.TraverseTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
f1,
|
||||
f2,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple2[A1, A2]) IO[tuple.Tuple2[T1, T2]] {
|
||||
return apply.TraverseTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
f1,
|
||||
f2,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT3 converts 3 [IO[T]] into a [IO[tuple.Tuple3[T1, T2, T3]]]
|
||||
func SequenceT3[T1, T2, T3 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
) IO[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.SequenceT3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
)
|
||||
return apply.SequenceT3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple3 converts a [tuple.Tuple3[IO[T]]] into a [IO[tuple.Tuple3[T1, T2, T3]]]
|
||||
func SequenceTuple3[T1, T2, T3 any](t tuple.Tuple3[IO[T1], IO[T2], IO[T3]]) IO[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.SequenceTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple3 converts a [tuple.Tuple3[A1, A2, A3]] into a [IO[tuple.Tuple3[T1, T2, T3]]]
|
||||
func TraverseTuple3[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], T1, T2, T3, A1, A2, A3 any](f1 F1, f2 F2, f3 F3) func(tuple.Tuple3[A1, A2, A3]) IO[tuple.Tuple3[T1, T2, T3]] {
|
||||
return func(t tuple.Tuple3[A1, A2, A3]) IO[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.TraverseTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple3[A1, A2, A3]) IO[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.TraverseTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT4 converts 4 [IO[T]] into a [IO[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func SequenceT4[T1, T2, T3, T4 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
) IO[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.SequenceT4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
)
|
||||
return apply.SequenceT4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple4 converts a [tuple.Tuple4[IO[T]]] into a [IO[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func SequenceTuple4[T1, T2, T3, T4 any](t tuple.Tuple4[IO[T1], IO[T2], IO[T3], IO[T4]]) IO[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.SequenceTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple4 converts a [tuple.Tuple4[A1, A2, A3, A4]] into a [IO[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func TraverseTuple4[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], T1, T2, T3, T4, A1, A2, A3, A4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(tuple.Tuple4[A1, A2, A3, A4]) IO[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return func(t tuple.Tuple4[A1, A2, A3, A4]) IO[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.TraverseTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple4[A1, A2, A3, A4]) IO[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.TraverseTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT5 converts 5 [IO[T]] into a [IO[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func SequenceT5[T1, T2, T3, T4, T5 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
) IO[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.SequenceT5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
)
|
||||
return apply.SequenceT5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple5 converts a [tuple.Tuple5[IO[T]]] into a [IO[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func SequenceTuple5[T1, T2, T3, T4, T5 any](t tuple.Tuple5[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5]]) IO[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.SequenceTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple5 converts a [tuple.Tuple5[A1, A2, A3, A4, A5]] into a [IO[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func TraverseTuple5[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], 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]) IO[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return func(t tuple.Tuple5[A1, A2, A3, A4, A5]) IO[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.TraverseTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple5[A1, A2, A3, A4, A5]) IO[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.TraverseTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT6 converts 6 [IO[T]] into a [IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func SequenceT6[T1, T2, T3, T4, T5, T6 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
) IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.SequenceT6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
)
|
||||
return apply.SequenceT6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple6 converts a [tuple.Tuple6[IO[T]]] into a [IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t tuple.Tuple6[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6]]) IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.SequenceTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple6 converts a [tuple.Tuple6[A1, A2, A3, A4, A5, A6]] into a [IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func TraverseTuple6[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], 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]) IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return func(t tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.TraverseTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IO[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.TraverseTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT7 converts 7 [IO[T]] into a [IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
) IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.SequenceT7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
)
|
||||
return apply.SequenceT7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple7 converts a [tuple.Tuple7[IO[T]]] into a [IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t tuple.Tuple7[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7]]) IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.SequenceTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple7 converts a [tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]] into a [IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func TraverseTuple7[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], 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]) IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return func(t tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.TraverseTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IO[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.TraverseTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT8 converts 8 [IO[T]] into a [IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
) IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.SequenceT8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
)
|
||||
return apply.SequenceT8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple8 converts a [tuple.Tuple8[IO[T]]] into a [IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t tuple.Tuple8[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8]]) IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.SequenceTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple8 converts a [tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]] into a [IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func TraverseTuple8[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], 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]) IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return func(t tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.TraverseTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IO[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.TraverseTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT9 converts 9 [IO[T]] into a [IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
t9 IO[T9],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
t9 IO[T9],
|
||||
) IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.SequenceT9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
)
|
||||
return apply.SequenceT9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple9 converts a [tuple.Tuple9[IO[T]]] into a [IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t tuple.Tuple9[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8], IO[T9]]) IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.SequenceTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple9 converts a [tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]] into a [IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func TraverseTuple9[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], F9 ~func(A9) IO[T9], 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]) IO[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]) IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.TraverseTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IO[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.TraverseTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT10 converts 10 [IO[T]] into a [IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
t9 IO[T9],
|
||||
t10 IO[T10],
|
||||
t1 IO[T1],
|
||||
t2 IO[T2],
|
||||
t3 IO[T3],
|
||||
t4 IO[T4],
|
||||
t5 IO[T5],
|
||||
t6 IO[T6],
|
||||
t7 IO[T7],
|
||||
t8 IO[T8],
|
||||
t9 IO[T9],
|
||||
t10 IO[T10],
|
||||
) IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.SequenceT10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
t10,
|
||||
)
|
||||
return apply.SequenceT10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
t10,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple10 converts a [tuple.Tuple10[IO[T]]] into a [IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t tuple.Tuple10[IO[T1], IO[T2], IO[T3], IO[T4], IO[T5], IO[T6], IO[T7], IO[T8], IO[T9], IO[T10]]) IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.SequenceTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple10 converts a [tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]] into a [IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func TraverseTuple10[F1 ~func(A1) IO[T1], F2 ~func(A2) IO[T2], F3 ~func(A3) IO[T3], F4 ~func(A4) IO[T4], F5 ~func(A5) IO[T5], F6 ~func(A6) IO[T6], F7 ~func(A7) IO[T7], F8 ~func(A8) IO[T8], F9 ~func(A9) IO[T9], F10 ~func(A10) IO[T10], 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]) IO[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]) IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.TraverseTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
f10,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IO[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.TraverseTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
f10,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,183 +3,193 @@
|
||||
// 2025-03-04 23:59:33.8343102 +0100 CET m=+0.003180601
|
||||
package generic
|
||||
|
||||
|
||||
import (
|
||||
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() ET.Either[error, R], F ~func() (R, error), R any](f F) func() GIOA {
|
||||
e := ET.Eitherize0(f)
|
||||
return func() GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e()
|
||||
}}
|
||||
e := ET.Eitherize0(f)
|
||||
return func() GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [GIOA]
|
||||
func Uneitherize0[GIOA ~func() ET.Either[error, R], GTA ~func() GIOA, R any](f GTA) func() (R, error) {
|
||||
return func() (R, error) {
|
||||
return ET.Unwrap(f()())
|
||||
}
|
||||
return func() (R, error) {
|
||||
return ET.Unwrap(f()())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA]
|
||||
func Eitherize1[GIOA ~func() ET.Either[error, R], F ~func(T1) (R, error), T1, R any](f F) func(T1) GIOA {
|
||||
e := ET.Eitherize1(f)
|
||||
return func(t1 T1) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1)
|
||||
}}
|
||||
e := ET.Eitherize1(f)
|
||||
return func(t1 T1) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [GIOA]
|
||||
func Uneitherize1[GIOA ~func() ET.Either[error, R], GTA ~func(T1) GIOA, T1, R any](f GTA) func(T1) (R, error) {
|
||||
return func(t1 T1) (R, error) {
|
||||
return ET.Unwrap(f(t1)())
|
||||
}
|
||||
return func(t1 T1) (R, error) {
|
||||
return ET.Unwrap(f(t1)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA]
|
||||
func Eitherize2[GIOA ~func() ET.Either[error, R], F ~func(T1, T2) (R, error), T1, T2, R any](f F) func(T1, T2) GIOA {
|
||||
e := ET.Eitherize2(f)
|
||||
return func(t1 T1, t2 T2) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2)
|
||||
}}
|
||||
e := ET.Eitherize2(f)
|
||||
return func(t1 T1, t2 T2) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [GIOA]
|
||||
func Uneitherize2[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2) GIOA, T1, T2, R any](f GTA) func(T1, T2) (R, error) {
|
||||
return func(t1 T1, t2 T2) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2)())
|
||||
}
|
||||
return func(t1 T1, t2 T2) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA]
|
||||
func Eitherize3[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3) (R, error), T1, T2, T3, R any](f F) func(T1, T2, T3) GIOA {
|
||||
e := ET.Eitherize3(f)
|
||||
return func(t1 T1, t2 T2, t3 T3) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3)
|
||||
}}
|
||||
e := ET.Eitherize3(f)
|
||||
return func(t1 T1, t2 T2, t3 T3) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [GIOA]
|
||||
func Uneitherize3[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3) GIOA, T1, T2, T3, R any](f GTA) func(T1, T2, T3) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA]
|
||||
func Eitherize4[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4) (R, error), T1, T2, T3, T4, R any](f F) func(T1, T2, T3, T4) GIOA {
|
||||
e := ET.Eitherize4(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4)
|
||||
}}
|
||||
e := ET.Eitherize4(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [GIOA]
|
||||
func Uneitherize4[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4) GIOA, T1, T2, T3, T4, R any](f GTA) func(T1, T2, T3, T4) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA]
|
||||
func Eitherize5[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5) (R, error), T1, T2, T3, T4, T5, R any](f F) func(T1, T2, T3, T4, T5) GIOA {
|
||||
e := ET.Eitherize5(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5)
|
||||
}}
|
||||
e := ET.Eitherize5(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [GIOA]
|
||||
func Uneitherize5[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5) GIOA, T1, T2, T3, T4, T5, R any](f GTA) func(T1, T2, T3, T4, T5) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA]
|
||||
func Eitherize6[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6) (R, error), T1, T2, T3, T4, T5, T6, R any](f F) func(T1, T2, T3, T4, T5, T6) GIOA {
|
||||
e := ET.Eitherize6(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6)
|
||||
}}
|
||||
e := ET.Eitherize6(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [GIOA]
|
||||
func Uneitherize6[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6) GIOA, T1, T2, T3, T4, T5, T6, R any](f GTA) func(T1, T2, T3, T4, T5, T6) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA]
|
||||
func Eitherize7[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7) (R, error), T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T1, T2, T3, T4, T5, T6, T7) GIOA {
|
||||
e := ET.Eitherize7(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7)
|
||||
}}
|
||||
e := ET.Eitherize7(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [GIOA]
|
||||
func Uneitherize7[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7) GIOA, T1, T2, T3, T4, T5, T6, T7, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA]
|
||||
func Eitherize8[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA {
|
||||
e := ET.Eitherize8(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8)
|
||||
}}
|
||||
e := ET.Eitherize8(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [GIOA]
|
||||
func Uneitherize8[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA]
|
||||
func Eitherize9[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA {
|
||||
e := ET.Eitherize9(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8, t9)
|
||||
}}
|
||||
e := ET.Eitherize9(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8, t9)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [GIOA]
|
||||
func Uneitherize9[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9)())
|
||||
}
|
||||
}
|
||||
|
||||
// Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA]
|
||||
func Eitherize10[GIOA ~func() ET.Either[error, R], F ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error), T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f F) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA {
|
||||
e := ET.Eitherize10(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)
|
||||
}}
|
||||
e := ET.Eitherize10(f)
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) GIOA {
|
||||
return func() ET.Either[error, R] {
|
||||
return e(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Uneitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [GIOA]
|
||||
func Uneitherize10[GIOA ~func() ET.Either[error, R], GTA ~func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) GIOA, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R any](f GTA) func(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) (R, error) {
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)())
|
||||
}
|
||||
return func(t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) (R, error) {
|
||||
return ET.Unwrap(f(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,568 +4,567 @@
|
||||
|
||||
package iooption
|
||||
|
||||
|
||||
import (
|
||||
"github.com/IBM/fp-go/v2/tuple"
|
||||
"github.com/IBM/fp-go/v2/internal/apply"
|
||||
"github.com/IBM/fp-go/v2/tuple"
|
||||
)
|
||||
|
||||
// SequenceT1 converts 1 [IOOption[T]] into a [IOOption[tuple.Tuple1[T1]]]
|
||||
func SequenceT1[T1 any](
|
||||
t1 IOOption[T1],
|
||||
t1 IOOption[T1],
|
||||
) IOOption[tuple.Tuple1[T1]] {
|
||||
return apply.SequenceT1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t1,
|
||||
)
|
||||
return apply.SequenceT1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t1,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple1 converts a [tuple.Tuple1[IOOption[T]]] into a [IOOption[tuple.Tuple1[T1]]]
|
||||
func SequenceTuple1[T1 any](t tuple.Tuple1[IOOption[T1]]) IOOption[tuple.Tuple1[T1]] {
|
||||
return apply.SequenceTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple1 converts a [tuple.Tuple1[A1]] into a [IOOption[tuple.Tuple1[T1]]]
|
||||
func TraverseTuple1[F1 ~func(A1) IOOption[T1], T1, A1 any](f1 F1) func(tuple.Tuple1[A1]) IOOption[tuple.Tuple1[T1]] {
|
||||
return func(t tuple.Tuple1[A1]) IOOption[tuple.Tuple1[T1]] {
|
||||
return apply.TraverseTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
f1,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple1[A1]) IOOption[tuple.Tuple1[T1]] {
|
||||
return apply.TraverseTuple1(
|
||||
Map[T1, tuple.Tuple1[T1]],
|
||||
f1,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT2 converts 2 [IOOption[T]] into a [IOOption[tuple.Tuple2[T1, T2]]]
|
||||
func SequenceT2[T1, T2 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
) IOOption[tuple.Tuple2[T1, T2]] {
|
||||
return apply.SequenceT2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t1,
|
||||
t2,
|
||||
)
|
||||
return apply.SequenceT2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t1,
|
||||
t2,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple2 converts a [tuple.Tuple2[IOOption[T]]] into a [IOOption[tuple.Tuple2[T1, T2]]]
|
||||
func SequenceTuple2[T1, T2 any](t tuple.Tuple2[IOOption[T1], IOOption[T2]]) IOOption[tuple.Tuple2[T1, T2]] {
|
||||
return apply.SequenceTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple2 converts a [tuple.Tuple2[A1, A2]] into a [IOOption[tuple.Tuple2[T1, T2]]]
|
||||
func TraverseTuple2[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], T1, T2, A1, A2 any](f1 F1, f2 F2) func(tuple.Tuple2[A1, A2]) IOOption[tuple.Tuple2[T1, T2]] {
|
||||
return func(t tuple.Tuple2[A1, A2]) IOOption[tuple.Tuple2[T1, T2]] {
|
||||
return apply.TraverseTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
f1,
|
||||
f2,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple2[A1, A2]) IOOption[tuple.Tuple2[T1, T2]] {
|
||||
return apply.TraverseTuple2(
|
||||
Map[T1, func(T2) tuple.Tuple2[T1, T2]],
|
||||
Ap[tuple.Tuple2[T1, T2], T2],
|
||||
f1,
|
||||
f2,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT3 converts 3 [IOOption[T]] into a [IOOption[tuple.Tuple3[T1, T2, T3]]]
|
||||
func SequenceT3[T1, T2, T3 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
) IOOption[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.SequenceT3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
)
|
||||
return apply.SequenceT3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple3 converts a [tuple.Tuple3[IOOption[T]]] into a [IOOption[tuple.Tuple3[T1, T2, T3]]]
|
||||
func SequenceTuple3[T1, T2, T3 any](t tuple.Tuple3[IOOption[T1], IOOption[T2], IOOption[T3]]) IOOption[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.SequenceTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple3 converts a [tuple.Tuple3[A1, A2, A3]] into a [IOOption[tuple.Tuple3[T1, T2, T3]]]
|
||||
func TraverseTuple3[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], T1, T2, T3, A1, A2, A3 any](f1 F1, f2 F2, f3 F3) func(tuple.Tuple3[A1, A2, A3]) IOOption[tuple.Tuple3[T1, T2, T3]] {
|
||||
return func(t tuple.Tuple3[A1, A2, A3]) IOOption[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.TraverseTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple3[A1, A2, A3]) IOOption[tuple.Tuple3[T1, T2, T3]] {
|
||||
return apply.TraverseTuple3(
|
||||
Map[T1, func(T2) func(T3) tuple.Tuple3[T1, T2, T3]],
|
||||
Ap[func(T3) tuple.Tuple3[T1, T2, T3], T2],
|
||||
Ap[tuple.Tuple3[T1, T2, T3], T3],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT4 converts 4 [IOOption[T]] into a [IOOption[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func SequenceT4[T1, T2, T3, T4 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
) IOOption[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.SequenceT4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
)
|
||||
return apply.SequenceT4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple4 converts a [tuple.Tuple4[IOOption[T]]] into a [IOOption[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func SequenceTuple4[T1, T2, T3, T4 any](t tuple.Tuple4[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4]]) IOOption[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.SequenceTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple4 converts a [tuple.Tuple4[A1, A2, A3, A4]] into a [IOOption[tuple.Tuple4[T1, T2, T3, T4]]]
|
||||
func TraverseTuple4[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], T1, T2, T3, T4, A1, A2, A3, A4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(tuple.Tuple4[A1, A2, A3, A4]) IOOption[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return func(t tuple.Tuple4[A1, A2, A3, A4]) IOOption[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.TraverseTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple4[A1, A2, A3, A4]) IOOption[tuple.Tuple4[T1, T2, T3, T4]] {
|
||||
return apply.TraverseTuple4(
|
||||
Map[T1, func(T2) func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4]],
|
||||
Ap[func(T3) func(T4) tuple.Tuple4[T1, T2, T3, T4], T2],
|
||||
Ap[func(T4) tuple.Tuple4[T1, T2, T3, T4], T3],
|
||||
Ap[tuple.Tuple4[T1, T2, T3, T4], T4],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT5 converts 5 [IOOption[T]] into a [IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func SequenceT5[T1, T2, T3, T4, T5 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
) IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.SequenceT5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
)
|
||||
return apply.SequenceT5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple5 converts a [tuple.Tuple5[IOOption[T]]] into a [IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func SequenceTuple5[T1, T2, T3, T4, T5 any](t tuple.Tuple5[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5]]) IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.SequenceTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple5 converts a [tuple.Tuple5[A1, A2, A3, A4, A5]] into a [IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]]]
|
||||
func TraverseTuple5[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], 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]) IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return func(t tuple.Tuple5[A1, A2, A3, A4, A5]) IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.TraverseTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple5[A1, A2, A3, A4, A5]) IOOption[tuple.Tuple5[T1, T2, T3, T4, T5]] {
|
||||
return apply.TraverseTuple5(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||
Ap[func(T5) tuple.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||
Ap[tuple.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT6 converts 6 [IOOption[T]] into a [IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func SequenceT6[T1, T2, T3, T4, T5, T6 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
) IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.SequenceT6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
)
|
||||
return apply.SequenceT6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple6 converts a [tuple.Tuple6[IOOption[T]]] into a [IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t tuple.Tuple6[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6]]) IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.SequenceTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple6 converts a [tuple.Tuple6[A1, A2, A3, A4, A5, A6]] into a [IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]]]
|
||||
func TraverseTuple6[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], 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]) IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return func(t tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.TraverseTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple6[A1, A2, A3, A4, A5, A6]) IOOption[tuple.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||
return apply.TraverseTuple6(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||
Ap[func(T5) func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||
Ap[func(T6) tuple.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||
Ap[tuple.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT7 converts 7 [IOOption[T]] into a [IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
) IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.SequenceT7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
)
|
||||
return apply.SequenceT7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple7 converts a [tuple.Tuple7[IOOption[T]]] into a [IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t tuple.Tuple7[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7]]) IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.SequenceTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple7 converts a [tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]] into a [IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]
|
||||
func TraverseTuple7[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], 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]) IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return func(t tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.TraverseTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple7[A1, A2, A3, A4, A5, A6, A7]) IOOption[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||
return apply.TraverseTuple7(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||
Ap[func(T5) func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||
Ap[func(T6) func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||
Ap[func(T7) tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||
Ap[tuple.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT8 converts 8 [IOOption[T]] into a [IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
) IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.SequenceT8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
)
|
||||
return apply.SequenceT8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple8 converts a [tuple.Tuple8[IOOption[T]]] into a [IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t tuple.Tuple8[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8]]) IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.SequenceTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple8 converts a [tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]] into a [IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]
|
||||
func TraverseTuple8[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], 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]) IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return func(t tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.TraverseTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) IOOption[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||
return apply.TraverseTuple8(
|
||||
Map[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], T2],
|
||||
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||
Ap[func(T6) func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||
Ap[func(T7) func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||
Ap[func(T8) tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||
Ap[tuple.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT9 converts 9 [IOOption[T]] into a [IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
t9 IOOption[T9],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
t9 IOOption[T9],
|
||||
) IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.SequenceT9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
)
|
||||
return apply.SequenceT9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple9 converts a [tuple.Tuple9[IOOption[T]]] into a [IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t tuple.Tuple9[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8], IOOption[T9]]) IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.SequenceTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple9 converts a [tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]] into a [IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]
|
||||
func TraverseTuple9[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], F9 ~func(A9) IOOption[T9], 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]) IOOption[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]) IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.TraverseTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) IOOption[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||
return apply.TraverseTuple9(
|
||||
Map[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], 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], T3],
|
||||
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||
Ap[func(T7) func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||
Ap[func(T8) func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||
Ap[func(T9) tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||
Ap[tuple.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// SequenceT10 converts 10 [IOOption[T]] into a [IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
t9 IOOption[T9],
|
||||
t10 IOOption[T10],
|
||||
t1 IOOption[T1],
|
||||
t2 IOOption[T2],
|
||||
t3 IOOption[T3],
|
||||
t4 IOOption[T4],
|
||||
t5 IOOption[T5],
|
||||
t6 IOOption[T6],
|
||||
t7 IOOption[T7],
|
||||
t8 IOOption[T8],
|
||||
t9 IOOption[T9],
|
||||
t10 IOOption[T10],
|
||||
) IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.SequenceT10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
t10,
|
||||
)
|
||||
return apply.SequenceT10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t1,
|
||||
t2,
|
||||
t3,
|
||||
t4,
|
||||
t5,
|
||||
t6,
|
||||
t7,
|
||||
t8,
|
||||
t9,
|
||||
t10,
|
||||
)
|
||||
}
|
||||
|
||||
// SequenceTuple10 converts a [tuple.Tuple10[IOOption[T]]] into a [IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t tuple.Tuple10[IOOption[T1], IOOption[T2], IOOption[T3], IOOption[T4], IOOption[T5], IOOption[T6], IOOption[T7], IOOption[T8], IOOption[T9], IOOption[T10]]) IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.SequenceTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t,
|
||||
)
|
||||
return apply.SequenceTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
t,
|
||||
)
|
||||
}
|
||||
|
||||
// TraverseTuple10 converts a [tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]] into a [IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]
|
||||
func TraverseTuple10[F1 ~func(A1) IOOption[T1], F2 ~func(A2) IOOption[T2], F3 ~func(A3) IOOption[T3], F4 ~func(A4) IOOption[T4], F5 ~func(A5) IOOption[T5], F6 ~func(A6) IOOption[T6], F7 ~func(A7) IOOption[T7], F8 ~func(A8) IOOption[T8], F9 ~func(A9) IOOption[T9], F10 ~func(A10) IOOption[T10], 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]) IOOption[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]) IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.TraverseTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
f10,
|
||||
t,
|
||||
)
|
||||
}
|
||||
return func(t tuple.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) IOOption[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||
return apply.TraverseTuple10(
|
||||
Map[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], 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], 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], T4],
|
||||
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||
Ap[func(T7) func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||
Ap[func(T8) func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||
Ap[func(T9) func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||
Ap[func(T10) tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||
Ap[tuple.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||
f1,
|
||||
f2,
|
||||
f3,
|
||||
f4,
|
||||
f5,
|
||||
f6,
|
||||
f7,
|
||||
f8,
|
||||
f9,
|
||||
f10,
|
||||
t,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ func TestMultipleHttpRequests(t *testing.T) {
|
||||
assert.Equal(t, E.Of[error](count), result())
|
||||
}
|
||||
|
||||
func heterogeneousHTTPRequests() R.ReaderIOEither[T.Tuple2[PostItem, CatFact]] {
|
||||
func heterogeneousHTTPRequests() ReaderIOEither[T.Tuple2[PostItem, CatFact]] {
|
||||
// prepare the http client
|
||||
client := H.MakeClient(HTTP.DefaultClient)
|
||||
// readSinglePost sends a GET request and parses the response as [PostItem]
|
||||
|
||||
24
v2/samples/http/types.go
Normal file
24
v2/samples/http/types.go
Normal file
@@ -0,0 +1,24 @@
|
||||
// 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 http
|
||||
|
||||
import (
|
||||
"github.com/IBM/fp-go/v2/context/readerioeither"
|
||||
)
|
||||
|
||||
type (
|
||||
ReaderIOEither[A any] = readerioeither.ReaderIOEither[A]
|
||||
)
|
||||
@@ -108,7 +108,7 @@ var (
|
||||
checkActive = E.FromPredicate(Chapter08User.isActive, F.Constant1[Chapter08User](fmt.Errorf("your account is not active")))
|
||||
|
||||
// validateUser :: (User -> Either String ()) -> User -> Either String User
|
||||
validateUser = F.Curry2(func(validate func(Chapter08User) E.Either[error, any], user Chapter08User) E.Either[error, Chapter08User] {
|
||||
validateUser = F.Curry2(func(validate func(Chapter08User) Either[any], user Chapter08User) Either[Chapter08User] {
|
||||
return F.Pipe2(
|
||||
user,
|
||||
validate,
|
||||
@@ -117,7 +117,7 @@ var (
|
||||
})
|
||||
|
||||
// save :: User -> IOEither error User
|
||||
save = func(user Chapter08User) IOE.IOEither[error, Chapter08User] {
|
||||
save = func(user Chapter08User) IOEither[Chapter08User] {
|
||||
return IOE.FromIO[error](func() Chapter08User {
|
||||
var u = user
|
||||
u.Saved = true
|
||||
@@ -126,7 +126,7 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
func Withdraw(amount float32) func(account Account) O.Option[Account] {
|
||||
func Withdraw(amount float32) func(account Account) Option[Account] {
|
||||
|
||||
return F.Flow3(
|
||||
getBalance,
|
||||
@@ -151,7 +151,7 @@ func MakeUser(d string) User {
|
||||
|
||||
var parseDate = F.Bind1of2(E.Eitherize2(time.Parse))(time.DateOnly)
|
||||
|
||||
func GetAge(now time.Time) func(User) E.Either[error, float64] {
|
||||
func GetAge(now time.Time) func(User) Either[float64] {
|
||||
return F.Flow3(
|
||||
getBirthDate,
|
||||
parseDate,
|
||||
|
||||
@@ -61,8 +61,8 @@ var (
|
||||
}
|
||||
|
||||
// getFromCache :: String -> IO User
|
||||
getFromCache = func(name string) IOO.IOOption[Player] {
|
||||
return func() O.Option[Player] {
|
||||
getFromCache = func(name string) IOOption[Player] {
|
||||
return func() Option[Player] {
|
||||
return M.MonadLookup(localStorage, name)
|
||||
}
|
||||
}
|
||||
@@ -122,7 +122,7 @@ func Example_renderPage() {
|
||||
}
|
||||
|
||||
func Example_solution10A() {
|
||||
safeAdd := F.Curry2(func(a, b O.Option[int]) O.Option[int] {
|
||||
safeAdd := F.Curry2(func(a, b Option[int]) Option[int] {
|
||||
return F.Pipe3(
|
||||
N.Add[int],
|
||||
O.Of[func(int) func(int) int],
|
||||
|
||||
@@ -26,7 +26,7 @@ import (
|
||||
S "github.com/IBM/fp-go/v2/string"
|
||||
)
|
||||
|
||||
func findUserByID(id int) IOE.IOEither[error, Chapter08User] {
|
||||
func findUserByID(id int) IOEither[Chapter08User] {
|
||||
switch id {
|
||||
case 1:
|
||||
return IOE.Of[error](albert08)
|
||||
|
||||
@@ -45,7 +45,7 @@ var (
|
||||
validatePlayer = E.FromPredicate(P.ContraMap(Player.getName)(S.IsNonEmpty), F.Flow2(Player.getID, errors.OnSome[int]("player %d must have a name")))
|
||||
|
||||
// readfile :: String -> String -> Task Error String
|
||||
readfile = F.Curry2(func(encoding, file string) IOE.IOEither[error, string] {
|
||||
readfile = F.Curry2(func(encoding, file string) IOEither[string] {
|
||||
return IOE.Of[error](fmt.Sprintf("content of %s (%s)", file, encoding))
|
||||
})
|
||||
|
||||
@@ -80,8 +80,8 @@ func Example_solution12B() {
|
||||
|
||||
func Example_solution12C() {
|
||||
traverseO := O.Traverse[string](
|
||||
IOE.Of[error, O.Option[string]],
|
||||
IOE.Map[error, string, O.Option[string]],
|
||||
IOE.Of[error, Option[string]],
|
||||
IOE.Map[error, string, Option[string]],
|
||||
)
|
||||
|
||||
// readFirst :: String -> Task Error (Maybe String)
|
||||
|
||||
@@ -14,3 +14,17 @@
|
||||
// limitations under the License.
|
||||
|
||||
package mostlyadequate
|
||||
|
||||
import (
|
||||
"github.com/IBM/fp-go/v2/either"
|
||||
"github.com/IBM/fp-go/v2/ioeither"
|
||||
"github.com/IBM/fp-go/v2/iooption"
|
||||
"github.com/IBM/fp-go/v2/option"
|
||||
)
|
||||
|
||||
type (
|
||||
Either[A any] = either.Either[error, A]
|
||||
IOEither[A any] = ioeither.IOEither[error, A]
|
||||
IOOption[A any] = iooption.IOOption[A]
|
||||
Option[A any] = option.Option[A]
|
||||
)
|
||||
|
||||
@@ -57,7 +57,7 @@ func TestSampleConvertDocx2(t *testing.T) {
|
||||
// other than reading from a `Reader`. As a consequence it can be a pure function itself.
|
||||
// The disadvantage is that its input has to exist in memory which is probably not a good
|
||||
// idea for large inputs
|
||||
convertDocx := func(data []byte) E.Either[error, T.Tuple2[string, map[string]string]] {
|
||||
convertDocx := func(data []byte) Either[T.Tuple2[string, map[string]string]] {
|
||||
text, meta, err := sampleConvertDocx(bytes.NewReader(data))
|
||||
return E.TryCatchError(T.MakeTuple2(text, meta), err)
|
||||
}
|
||||
|
||||
22
v2/samples/tuples/types.go
Normal file
22
v2/samples/tuples/types.go
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 tuples
|
||||
|
||||
import "github.com/IBM/fp-go/v2/either"
|
||||
|
||||
type (
|
||||
Either[A any] = either.Either[error, A]
|
||||
)
|
||||
Reference in New Issue
Block a user