mirror of
https://github.com/IBM/fp-go.git
synced 2025-06-23 00:27:49 +02:00
1536 lines
53 KiB
Go
1536 lines
53 KiB
Go
// Code generated by go generate; DO NOT EDIT.
|
|
// This file was generated by robots at
|
|
// 2023-07-18 15:21:34.1598359 +0200 CEST m=+0.018814001
|
|
package apply
|
|
|
|
|
|
import (
|
|
F "github.com/ibm/fp-go/function"
|
|
T "github.com/ibm/fp-go/tuple"
|
|
)
|
|
|
|
// tupleConstructor1 returns a curried version of [T.MakeTuple1]
|
|
func tupleConstructor1[T1 any]() func(T1) T.Tuple1[T1] {
|
|
return F.Curry1(T.MakeTuple1[T1])
|
|
}
|
|
|
|
// SequenceT1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 1 higher higher kinded types and returns a higher kinded type of a [Tuple1] with the resolved values.
|
|
func SequenceT1[
|
|
MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1,
|
|
T1,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_TUPLE1 any, // HKT[Tuple1[T1]]
|
|
](
|
|
fmap MAP,
|
|
t1 HKT_T1,
|
|
) HKT_TUPLE1 {
|
|
return F.Pipe1(
|
|
t1,
|
|
fmap(tupleConstructor1[T1]()),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple1] of higher higher kinded types and returns a higher kinded type of a [Tuple1] with the resolved values.
|
|
func SequenceTuple1[
|
|
MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1,
|
|
T1,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_TUPLE1 any, // HKT[Tuple1[T1]]
|
|
](
|
|
fmap MAP,
|
|
t T.Tuple1[HKT_T1],
|
|
) HKT_TUPLE1 {
|
|
return F.Pipe1(
|
|
t.F1,
|
|
fmap(tupleConstructor1[T1]()),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple1 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple1] of base types and 1 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple1] with the resolved values.
|
|
func TraverseTuple1[
|
|
MAP ~func(func(T1) T.Tuple1[T1]) func(HKT_T1) HKT_TUPLE1,
|
|
F1 ~func(A1) HKT_T1,
|
|
A1, T1,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_TUPLE1 any, // HKT[Tuple1[T1]]
|
|
](
|
|
fmap MAP,
|
|
f1 F1,
|
|
t T.Tuple1[A1],
|
|
) HKT_TUPLE1 {
|
|
return F.Pipe1(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor1[T1]()),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor2 returns a curried version of [T.MakeTuple2]
|
|
func tupleConstructor2[T1, T2 any]() func(T1) func(T2) T.Tuple2[T1, T2] {
|
|
return F.Curry2(T.MakeTuple2[T1, T2])
|
|
}
|
|
|
|
// SequenceT2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 2 higher higher kinded types and returns a higher kinded type of a [Tuple2] with the resolved values.
|
|
func SequenceT2[
|
|
MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2,
|
|
T1,
|
|
T2,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]]
|
|
HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
) HKT_TUPLE2 {
|
|
return F.Pipe2(
|
|
t1,
|
|
fmap(tupleConstructor2[T1, T2]()),
|
|
fap1(t2),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple2] of higher higher kinded types and returns a higher kinded type of a [Tuple2] with the resolved values.
|
|
func SequenceTuple2[
|
|
MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2,
|
|
T1,
|
|
T2,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]]
|
|
HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
t T.Tuple2[HKT_T1, HKT_T2],
|
|
) HKT_TUPLE2 {
|
|
return F.Pipe2(
|
|
t.F1,
|
|
fmap(tupleConstructor2[T1, T2]()),
|
|
fap1(t.F2),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple2 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple2] of base types and 2 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple2] with the resolved values.
|
|
func TraverseTuple2[
|
|
MAP ~func(func(T1) func(T2) T.Tuple2[T1, T2]) func(HKT_T1) HKT_F_T2,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2) HKT_TUPLE2,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
A1, T1,
|
|
A2, T2,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_F_T2, // HKT[func(T2) T.Tuple2[T1, T2]]
|
|
HKT_TUPLE2 any, // HKT[Tuple2[T1, T2]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
f1 F1,
|
|
f2 F2,
|
|
t T.Tuple2[A1, A2],
|
|
) HKT_TUPLE2 {
|
|
return F.Pipe2(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor2[T1, T2]()),
|
|
fap1(f2(t.F2)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor3 returns a curried version of [T.MakeTuple3]
|
|
func tupleConstructor3[T1, T2, T3 any]() func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3] {
|
|
return F.Curry3(T.MakeTuple3[T1, T2, T3])
|
|
}
|
|
|
|
// SequenceT3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 3 higher higher kinded types and returns a higher kinded type of a [Tuple3] with the resolved values.
|
|
func SequenceT3[
|
|
MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
) HKT_TUPLE3 {
|
|
return F.Pipe3(
|
|
t1,
|
|
fmap(tupleConstructor3[T1, T2, T3]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple3] of higher higher kinded types and returns a higher kinded type of a [Tuple3] with the resolved values.
|
|
func SequenceTuple3[
|
|
MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
t T.Tuple3[HKT_T1, HKT_T2, HKT_T3],
|
|
) HKT_TUPLE3 {
|
|
return F.Pipe3(
|
|
t.F1,
|
|
fmap(tupleConstructor3[T1, T2, T3]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple3 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple3] of base types and 3 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple3] with the resolved values.
|
|
func TraverseTuple3[
|
|
MAP ~func(func(T1) func(T2) func(T3) T.Tuple3[T1, T2, T3]) func(HKT_T1) HKT_F_T2_T3,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3) HKT_F_T3,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3) HKT_TUPLE3,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_F_T2_T3, // HKT[func(T2) func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_F_T3, // HKT[func(T3) T.Tuple3[T1, T2, T3]]
|
|
HKT_TUPLE3 any, // HKT[Tuple3[T1, T2, T3]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
t T.Tuple3[A1, A2, A3],
|
|
) HKT_TUPLE3 {
|
|
return F.Pipe3(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor3[T1, T2, T3]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor4 returns a curried version of [T.MakeTuple4]
|
|
func tupleConstructor4[T1, T2, T3, T4 any]() func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4] {
|
|
return F.Curry4(T.MakeTuple4[T1, T2, T3, T4])
|
|
}
|
|
|
|
// SequenceT4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 4 higher higher kinded types and returns a higher kinded type of a [Tuple4] with the resolved values.
|
|
func SequenceT4[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
) HKT_TUPLE4 {
|
|
return F.Pipe4(
|
|
t1,
|
|
fmap(tupleConstructor4[T1, T2, T3, T4]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple4] of higher higher kinded types and returns a higher kinded type of a [Tuple4] with the resolved values.
|
|
func SequenceTuple4[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
t T.Tuple4[HKT_T1, HKT_T2, HKT_T3, HKT_T4],
|
|
) HKT_TUPLE4 {
|
|
return F.Pipe4(
|
|
t.F1,
|
|
fmap(tupleConstructor4[T1, T2, T3, T4]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple4 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple4] of base types and 4 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple4] with the resolved values.
|
|
func TraverseTuple4[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]) func(HKT_T1) HKT_F_T2_T3_T4,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4) HKT_F_T3_T4,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4) HKT_F_T4,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4) HKT_TUPLE4,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_F_T2_T3_T4, // HKT[func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T3_T4, // HKT[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_F_T4, // HKT[func(T4) T.Tuple4[T1, T2, T3, T4]]
|
|
HKT_TUPLE4 any, // HKT[Tuple4[T1, T2, T3, T4]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
t T.Tuple4[A1, A2, A3, A4],
|
|
) HKT_TUPLE4 {
|
|
return F.Pipe4(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor4[T1, T2, T3, T4]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor5 returns a curried version of [T.MakeTuple5]
|
|
func tupleConstructor5[T1, T2, T3, T4, T5 any]() func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5] {
|
|
return F.Curry5(T.MakeTuple5[T1, T2, T3, T4, T5])
|
|
}
|
|
|
|
// SequenceT5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 5 higher higher kinded types and returns a higher kinded type of a [Tuple5] with the resolved values.
|
|
func SequenceT5[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
) HKT_TUPLE5 {
|
|
return F.Pipe5(
|
|
t1,
|
|
fmap(tupleConstructor5[T1, T2, T3, T4, T5]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple5] of higher higher kinded types and returns a higher kinded type of a [Tuple5] with the resolved values.
|
|
func SequenceTuple5[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
t T.Tuple5[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5],
|
|
) HKT_TUPLE5 {
|
|
return F.Pipe5(
|
|
t.F1,
|
|
fmap(tupleConstructor5[T1, T2, T3, T4, T5]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple5 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple5] of base types and 5 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple5] with the resolved values.
|
|
func TraverseTuple5[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]) func(HKT_T1) HKT_F_T2_T3_T4_T5,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5) HKT_F_T3_T4_T5,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5) HKT_F_T4_T5,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5) HKT_F_T5,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5) HKT_TUPLE5,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_F_T2_T3_T4_T5, // HKT[func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T3_T4_T5, // HKT[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T4_T5, // HKT[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_F_T5, // HKT[func(T5) T.Tuple5[T1, T2, T3, T4, T5]]
|
|
HKT_TUPLE5 any, // HKT[Tuple5[T1, T2, T3, T4, T5]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
t T.Tuple5[A1, A2, A3, A4, A5],
|
|
) HKT_TUPLE5 {
|
|
return F.Pipe5(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor5[T1, T2, T3, T4, T5]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor6 returns a curried version of [T.MakeTuple6]
|
|
func tupleConstructor6[T1, T2, T3, T4, T5, T6 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6] {
|
|
return F.Curry6(T.MakeTuple6[T1, T2, T3, T4, T5, T6])
|
|
}
|
|
|
|
// SequenceT6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 6 higher higher kinded types and returns a higher kinded type of a [Tuple6] with the resolved values.
|
|
func SequenceT6[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
t6 HKT_T6,
|
|
) HKT_TUPLE6 {
|
|
return F.Pipe6(
|
|
t1,
|
|
fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
fap5(t6),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple6] of higher higher kinded types and returns a higher kinded type of a [Tuple6] with the resolved values.
|
|
func SequenceTuple6[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
t T.Tuple6[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6],
|
|
) HKT_TUPLE6 {
|
|
return F.Pipe6(
|
|
t.F1,
|
|
fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
fap5(t.F6),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple6 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple6] of base types and 6 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple6] with the resolved values.
|
|
func TraverseTuple6[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6) HKT_F_T3_T4_T5_T6,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6) HKT_F_T4_T5_T6,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6) HKT_F_T5_T6,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6) HKT_F_T6,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6) HKT_TUPLE6,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
F6 ~func(A6) HKT_T6,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
A6, T6,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_F_T2_T3_T4_T5_T6, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T3_T4_T5_T6, // HKT[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T4_T5_T6, // HKT[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T5_T6, // HKT[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_F_T6, // HKT[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
HKT_TUPLE6 any, // HKT[Tuple6[T1, T2, T3, T4, T5, T6]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
f6 F6,
|
|
t T.Tuple6[A1, A2, A3, A4, A5, A6],
|
|
) HKT_TUPLE6 {
|
|
return F.Pipe6(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor6[T1, T2, T3, T4, T5, T6]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
fap5(f6(t.F6)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor7 returns a curried version of [T.MakeTuple7]
|
|
func tupleConstructor7[T1, T2, T3, T4, T5, T6, T7 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] {
|
|
return F.Curry7(T.MakeTuple7[T1, T2, T3, T4, T5, T6, T7])
|
|
}
|
|
|
|
// SequenceT7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 7 higher higher kinded types and returns a higher kinded type of a [Tuple7] with the resolved values.
|
|
func SequenceT7[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
t6 HKT_T6,
|
|
t7 HKT_T7,
|
|
) HKT_TUPLE7 {
|
|
return F.Pipe7(
|
|
t1,
|
|
fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
fap5(t6),
|
|
fap6(t7),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple7] of higher higher kinded types and returns a higher kinded type of a [Tuple7] with the resolved values.
|
|
func SequenceTuple7[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
t T.Tuple7[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7],
|
|
) HKT_TUPLE7 {
|
|
return F.Pipe7(
|
|
t.F1,
|
|
fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
fap5(t.F6),
|
|
fap6(t.F7),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple7 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple7] of base types and 7 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple7] with the resolved values.
|
|
func TraverseTuple7[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7) HKT_F_T3_T4_T5_T6_T7,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7) HKT_F_T4_T5_T6_T7,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7) HKT_F_T5_T6_T7,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7) HKT_F_T6_T7,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7) HKT_F_T7,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7) HKT_TUPLE7,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
F6 ~func(A6) HKT_T6,
|
|
F7 ~func(A7) HKT_T7,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
A6, T6,
|
|
A7, T7,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_F_T2_T3_T4_T5_T6_T7, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T3_T4_T5_T6_T7, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T4_T5_T6_T7, // HKT[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T5_T6_T7, // HKT[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T6_T7, // HKT[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_F_T7, // HKT[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
HKT_TUPLE7 any, // HKT[Tuple7[T1, T2, T3, T4, T5, T6, T7]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
f6 F6,
|
|
f7 F7,
|
|
t T.Tuple7[A1, A2, A3, A4, A5, A6, A7],
|
|
) HKT_TUPLE7 {
|
|
return F.Pipe7(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor7[T1, T2, T3, T4, T5, T6, T7]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
fap5(f6(t.F6)),
|
|
fap6(f7(t.F7)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor8 returns a curried version of [T.MakeTuple8]
|
|
func tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] {
|
|
return F.Curry8(T.MakeTuple8[T1, T2, T3, T4, T5, T6, T7, T8])
|
|
}
|
|
|
|
// SequenceT8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 8 higher higher kinded types and returns a higher kinded type of a [Tuple8] with the resolved values.
|
|
func SequenceT8[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
t6 HKT_T6,
|
|
t7 HKT_T7,
|
|
t8 HKT_T8,
|
|
) HKT_TUPLE8 {
|
|
return F.Pipe8(
|
|
t1,
|
|
fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
fap5(t6),
|
|
fap6(t7),
|
|
fap7(t8),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple8] of higher higher kinded types and returns a higher kinded type of a [Tuple8] with the resolved values.
|
|
func SequenceTuple8[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
t T.Tuple8[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8],
|
|
) HKT_TUPLE8 {
|
|
return F.Pipe8(
|
|
t.F1,
|
|
fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
fap5(t.F6),
|
|
fap6(t.F7),
|
|
fap7(t.F8),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple8 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple8] of base types and 8 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple8] with the resolved values.
|
|
func TraverseTuple8[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8) HKT_F_T3_T4_T5_T6_T7_T8,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8) HKT_F_T4_T5_T6_T7_T8,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8) HKT_F_T5_T6_T7_T8,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8) HKT_F_T6_T7_T8,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8) HKT_F_T7_T8,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8) HKT_F_T8,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8) HKT_TUPLE8,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
F6 ~func(A6) HKT_T6,
|
|
F7 ~func(A7) HKT_T7,
|
|
F8 ~func(A8) HKT_T8,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
A6, T6,
|
|
A7, T7,
|
|
A8, T8,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T4_T5_T6_T7_T8, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T5_T6_T7_T8, // HKT[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T6_T7_T8, // HKT[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T7_T8, // HKT[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_F_T8, // HKT[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
HKT_TUPLE8 any, // HKT[Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
f6 F6,
|
|
f7 F7,
|
|
f8 F8,
|
|
t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8],
|
|
) HKT_TUPLE8 {
|
|
return F.Pipe8(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor8[T1, T2, T3, T4, T5, T6, T7, T8]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
fap5(f6(t.F6)),
|
|
fap6(f7(t.F7)),
|
|
fap7(f8(t.F8)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor9 returns a curried version of [T.MakeTuple9]
|
|
func tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] {
|
|
return F.Curry9(T.MakeTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9])
|
|
}
|
|
|
|
// SequenceT9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 9 higher higher kinded types and returns a higher kinded type of a [Tuple9] with the resolved values.
|
|
func SequenceT9[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
T9,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
t6 HKT_T6,
|
|
t7 HKT_T7,
|
|
t8 HKT_T8,
|
|
t9 HKT_T9,
|
|
) HKT_TUPLE9 {
|
|
return F.Pipe9(
|
|
t1,
|
|
fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
fap5(t6),
|
|
fap6(t7),
|
|
fap7(t8),
|
|
fap8(t9),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple9] of higher higher kinded types and returns a higher kinded type of a [Tuple9] with the resolved values.
|
|
func SequenceTuple9[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
T9,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
t T.Tuple9[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9],
|
|
) HKT_TUPLE9 {
|
|
return F.Pipe9(
|
|
t.F1,
|
|
fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
fap5(t.F6),
|
|
fap6(t.F7),
|
|
fap7(t.F8),
|
|
fap8(t.F9),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple9 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple9] of base types and 9 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple9] with the resolved values.
|
|
func TraverseTuple9[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9) HKT_F_T3_T4_T5_T6_T7_T8_T9,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9) HKT_F_T4_T5_T6_T7_T8_T9,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9) HKT_F_T5_T6_T7_T8_T9,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9) HKT_F_T6_T7_T8_T9,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9) HKT_F_T7_T8_T9,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9) HKT_F_T8_T9,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9) HKT_F_T9,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9) HKT_TUPLE9,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
F6 ~func(A6) HKT_T6,
|
|
F7 ~func(A7) HKT_T7,
|
|
F8 ~func(A8) HKT_T8,
|
|
F9 ~func(A9) HKT_T9,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
A6, T6,
|
|
A7, T7,
|
|
A8, T8,
|
|
A9, T9,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T5_T6_T7_T8_T9, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T6_T7_T8_T9, // HKT[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T7_T8_T9, // HKT[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T8_T9, // HKT[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_F_T9, // HKT[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
HKT_TUPLE9 any, // HKT[Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
f6 F6,
|
|
f7 F7,
|
|
f8 F8,
|
|
f9 F9,
|
|
t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9],
|
|
) HKT_TUPLE9 {
|
|
return F.Pipe9(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor9[T1, T2, T3, T4, T5, T6, T7, T8, T9]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
fap5(f6(t.F6)),
|
|
fap6(f7(t.F7)),
|
|
fap7(f8(t.F8)),
|
|
fap8(f9(t.F9)),
|
|
)
|
|
}
|
|
|
|
// tupleConstructor10 returns a curried version of [T.MakeTuple10]
|
|
func tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]() func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] {
|
|
return F.Curry10(T.MakeTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10])
|
|
}
|
|
|
|
// SequenceT10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes 10 higher higher kinded types and returns a higher kinded type of a [Tuple10] with the resolved values.
|
|
func SequenceT10[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10,
|
|
AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
T9,
|
|
T10,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_T10, // HKT[T10]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
fap9 AP9,
|
|
t1 HKT_T1,
|
|
t2 HKT_T2,
|
|
t3 HKT_T3,
|
|
t4 HKT_T4,
|
|
t5 HKT_T5,
|
|
t6 HKT_T6,
|
|
t7 HKT_T7,
|
|
t8 HKT_T8,
|
|
t9 HKT_T9,
|
|
t10 HKT_T10,
|
|
) HKT_TUPLE10 {
|
|
return F.Pipe10(
|
|
t1,
|
|
fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()),
|
|
fap1(t2),
|
|
fap2(t3),
|
|
fap3(t4),
|
|
fap4(t5),
|
|
fap5(t6),
|
|
fap6(t7),
|
|
fap7(t8),
|
|
fap8(t9),
|
|
fap9(t10),
|
|
)
|
|
}
|
|
|
|
// SequenceTuple10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple10] of higher higher kinded types and returns a higher kinded type of a [Tuple10] with the resolved values.
|
|
func SequenceTuple10[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10,
|
|
AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10,
|
|
T1,
|
|
T2,
|
|
T3,
|
|
T4,
|
|
T5,
|
|
T6,
|
|
T7,
|
|
T8,
|
|
T9,
|
|
T10,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_T10, // HKT[T10]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
fap9 AP9,
|
|
t T.Tuple10[HKT_T1, HKT_T2, HKT_T3, HKT_T4, HKT_T5, HKT_T6, HKT_T7, HKT_T8, HKT_T9, HKT_T10],
|
|
) HKT_TUPLE10 {
|
|
return F.Pipe10(
|
|
t.F1,
|
|
fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()),
|
|
fap1(t.F2),
|
|
fap2(t.F3),
|
|
fap3(t.F4),
|
|
fap4(t.F5),
|
|
fap5(t.F6),
|
|
fap6(t.F7),
|
|
fap7(t.F8),
|
|
fap8(t.F9),
|
|
fap9(t.F10),
|
|
)
|
|
}
|
|
|
|
// TraverseTuple10 is a utility function used to implement the sequence operation for higher kinded types based only on map and ap.
|
|
// The function takes a [Tuple10] of base types and 10 functions that transform these based types into higher higher kinded types. It returns a higher kinded type of a [Tuple10] with the resolved values.
|
|
func TraverseTuple10[
|
|
MAP ~func(func(T1) func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) func(HKT_T1) HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP1 ~func(HKT_T2) func(HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T3_T4_T5_T6_T7_T8_T9_T10,
|
|
AP2 ~func(HKT_T3) func(HKT_F_T3_T4_T5_T6_T7_T8_T9_T10) HKT_F_T4_T5_T6_T7_T8_T9_T10,
|
|
AP3 ~func(HKT_T4) func(HKT_F_T4_T5_T6_T7_T8_T9_T10) HKT_F_T5_T6_T7_T8_T9_T10,
|
|
AP4 ~func(HKT_T5) func(HKT_F_T5_T6_T7_T8_T9_T10) HKT_F_T6_T7_T8_T9_T10,
|
|
AP5 ~func(HKT_T6) func(HKT_F_T6_T7_T8_T9_T10) HKT_F_T7_T8_T9_T10,
|
|
AP6 ~func(HKT_T7) func(HKT_F_T7_T8_T9_T10) HKT_F_T8_T9_T10,
|
|
AP7 ~func(HKT_T8) func(HKT_F_T8_T9_T10) HKT_F_T9_T10,
|
|
AP8 ~func(HKT_T9) func(HKT_F_T9_T10) HKT_F_T10,
|
|
AP9 ~func(HKT_T10) func(HKT_F_T10) HKT_TUPLE10,
|
|
F1 ~func(A1) HKT_T1,
|
|
F2 ~func(A2) HKT_T2,
|
|
F3 ~func(A3) HKT_T3,
|
|
F4 ~func(A4) HKT_T4,
|
|
F5 ~func(A5) HKT_T5,
|
|
F6 ~func(A6) HKT_T6,
|
|
F7 ~func(A7) HKT_T7,
|
|
F8 ~func(A8) HKT_T8,
|
|
F9 ~func(A9) HKT_T9,
|
|
F10 ~func(A10) HKT_T10,
|
|
A1, T1,
|
|
A2, T2,
|
|
A3, T3,
|
|
A4, T4,
|
|
A5, T5,
|
|
A6, T6,
|
|
A7, T7,
|
|
A8, T8,
|
|
A9, T9,
|
|
A10, T10,
|
|
HKT_T1, // HKT[T1]
|
|
HKT_T2, // HKT[T2]
|
|
HKT_T3, // HKT[T3]
|
|
HKT_T4, // HKT[T4]
|
|
HKT_T5, // HKT[T5]
|
|
HKT_T6, // HKT[T6]
|
|
HKT_T7, // HKT[T7]
|
|
HKT_T8, // HKT[T8]
|
|
HKT_T9, // HKT[T9]
|
|
HKT_T10, // HKT[T10]
|
|
HKT_F_T2_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T3_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T4_T5_T6_T7_T8_T9_T10, // HKT[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T5_T6_T7_T8_T9_T10, // HKT[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T6_T7_T8_T9_T10, // HKT[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T7_T8_T9_T10, // HKT[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T8_T9_T10, // HKT[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T9_T10, // HKT[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_F_T10, // HKT[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
HKT_TUPLE10 any, // HKT[Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]
|
|
](
|
|
fmap MAP,
|
|
fap1 AP1,
|
|
fap2 AP2,
|
|
fap3 AP3,
|
|
fap4 AP4,
|
|
fap5 AP5,
|
|
fap6 AP6,
|
|
fap7 AP7,
|
|
fap8 AP8,
|
|
fap9 AP9,
|
|
f1 F1,
|
|
f2 F2,
|
|
f3 F3,
|
|
f4 F4,
|
|
f5 F5,
|
|
f6 F6,
|
|
f7 F7,
|
|
f8 F8,
|
|
f9 F9,
|
|
f10 F10,
|
|
t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10],
|
|
) HKT_TUPLE10 {
|
|
return F.Pipe10(
|
|
f1(t.F1),
|
|
fmap(tupleConstructor10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]()),
|
|
fap1(f2(t.F2)),
|
|
fap2(f3(t.F3)),
|
|
fap3(f4(t.F4)),
|
|
fap4(f5(t.F5)),
|
|
fap5(f6(t.F6)),
|
|
fap6(f7(t.F7)),
|
|
fap7(f8(t.F8)),
|
|
fap8(f9(t.F9)),
|
|
fap9(f10(t.F10)),
|
|
)
|
|
}
|