mirror of
https://github.com/IBM/fp-go.git
synced 2025-06-23 00:27:49 +02:00
fix: initial release
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
@ -1,5 +1,7 @@
|
|||||||
# Functional programming library for golang
|
# Functional programming library for golang
|
||||||
|
|
||||||
|
**Work in progress!**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Design Goal
|
## Design Goal
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
func Commands() []*C.Command {
|
func Commands() []*C.Command {
|
||||||
return []*C.Command{
|
return []*C.Command{
|
||||||
PipeCommand(),
|
PipeCommand(),
|
||||||
|
IdentityCommand(),
|
||||||
OptionCommand(),
|
OptionCommand(),
|
||||||
EitherCommand(),
|
EitherCommand(),
|
||||||
TupleCommand(),
|
TupleCommand(),
|
||||||
|
@ -25,48 +25,7 @@ func generateEitherSequenceTuple(f *os.File, i int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func generateEitherSequenceT(f *os.File, i int) {
|
func generateEitherSequenceT(f *os.File, i int) {
|
||||||
|
generateSequenceT1(eitherHKT("E"), "E")(f, i)
|
||||||
tuple := tupleType(i)
|
|
||||||
|
|
||||||
fmt.Fprintf(f, "\n// SequenceT%d converts %d parameters of [Either[E, T]] into an [Either] of a [Tuple%d].\n", i, i, i)
|
|
||||||
fmt.Fprintf(f, "func SequenceT%d[E", i)
|
|
||||||
for j := 0; j < i; j++ {
|
|
||||||
fmt.Fprintf(f, ", T%d", j+1)
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, " any](")
|
|
||||||
for j := 0; j < i; j++ {
|
|
||||||
if j > 0 {
|
|
||||||
fmt.Fprintf(f, ", ")
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, "t%d Either[E, T%d]", j+1, j+1)
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, ") Either[E, %s] {\n", tuple)
|
|
||||||
fmt.Fprintf(f, " return A.SequenceT%d(\n", i)
|
|
||||||
// map
|
|
||||||
fmt.Fprintf(f, " Map[E, T1,")
|
|
||||||
for j := 1; j < i; j++ {
|
|
||||||
fmt.Fprintf(f, " func(T%d)", j+1)
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, " %s],\n", tuple)
|
|
||||||
// applicatives
|
|
||||||
for j := 1; j < i; j++ {
|
|
||||||
fmt.Fprintf(f, " Ap[")
|
|
||||||
for k := j + 1; k < i; k++ {
|
|
||||||
if k > j+1 {
|
|
||||||
fmt.Fprintf(f, " ")
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, "func(T%d)", k+1)
|
|
||||||
}
|
|
||||||
if j < i-1 {
|
|
||||||
fmt.Fprintf(f, " ")
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, "%s, E, T%d],\n", tuple, j+1)
|
|
||||||
}
|
|
||||||
for j := 0; j < i; j++ {
|
|
||||||
fmt.Fprintf(f, " t%d,\n", j+1)
|
|
||||||
}
|
|
||||||
fmt.Fprintf(f, " )\n")
|
|
||||||
fmt.Fprintf(f, "}\n")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateUneitherize(f *os.File, i int) {
|
func generateUneitherize(f *os.File, i int) {
|
||||||
|
88
cli/identity.go
Normal file
88
cli/identity.go
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package cli
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
C "github.com/urfave/cli/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func identityHKT(typeA string) string {
|
||||||
|
return typeA
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateIdentityTraverseTuple(f *os.File, i int) {
|
||||||
|
generateTraverseTuple1(identityHKT, "")(f, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateIdentitySequenceTuple(f *os.File, i int) {
|
||||||
|
generateSequenceTuple1(identityHKT, "")(f, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateIdentitySequenceT(f *os.File, i int) {
|
||||||
|
generateSequenceT1(identityHKT, "")(f, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateIdentityHelpers(filename string, count int) error {
|
||||||
|
dir, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
absDir, err := filepath.Abs(dir)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
pkg := filepath.Base(absDir)
|
||||||
|
f, err := os.Create(filepath.Clean(filename))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
// log
|
||||||
|
log.Printf("Generating code in [%s] for package [%s] with [%d] repetitions ...", filename, pkg, count)
|
||||||
|
|
||||||
|
// some header
|
||||||
|
fmt.Fprintln(f, "// Code generated by go generate; DO NOT EDIT.")
|
||||||
|
fmt.Fprintln(f, "// This file was generated by robots at")
|
||||||
|
fmt.Fprintf(f, "// %s\n", time.Now())
|
||||||
|
|
||||||
|
fmt.Fprintf(f, "package %s\n\n", pkg)
|
||||||
|
|
||||||
|
fmt.Fprintf(f, `
|
||||||
|
import (
|
||||||
|
A "github.com/ibm/fp-go/internal/apply"
|
||||||
|
T "github.com/ibm/fp-go/tuple"
|
||||||
|
)
|
||||||
|
`)
|
||||||
|
|
||||||
|
for i := 1; i <= count; i++ {
|
||||||
|
// sequenceT
|
||||||
|
generateIdentitySequenceT(f, i)
|
||||||
|
// sequenceTuple
|
||||||
|
generateIdentitySequenceTuple(f, i)
|
||||||
|
// traverseTuple
|
||||||
|
generateIdentityTraverseTuple(f, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func IdentityCommand() *C.Command {
|
||||||
|
return &C.Command{
|
||||||
|
Name: "identity",
|
||||||
|
Usage: "generate code for Identity",
|
||||||
|
Flags: []C.Flag{
|
||||||
|
flagCount,
|
||||||
|
flagFilename,
|
||||||
|
},
|
||||||
|
Action: func(ctx *C.Context) error {
|
||||||
|
return generateIdentityHelpers(
|
||||||
|
ctx.String(keyFilename),
|
||||||
|
ctx.Int(keyCount),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
66
cli/monad.go
66
cli/monad.go
@ -274,3 +274,69 @@ func generateSequenceTuple1(
|
|||||||
fmt.Fprintf(f, "}\n")
|
fmt.Fprintf(f, "}\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateSequenceT1(
|
||||||
|
hkt func(string) string,
|
||||||
|
infix string) func(f *os.File, i int) {
|
||||||
|
|
||||||
|
return func(f *os.File, i int) {
|
||||||
|
|
||||||
|
tuple := tupleType(i)
|
||||||
|
|
||||||
|
fmt.Fprintf(f, "\n// SequenceT%d converts %d parameters of [%s] into a [%s].\n", i, i, hkt("T"), hkt(fmt.Sprintf("Tuple%d", i)))
|
||||||
|
fmt.Fprintf(f, "func SequenceT%d[", i)
|
||||||
|
if infix != "" {
|
||||||
|
fmt.Fprintf(f, "%s", infix)
|
||||||
|
}
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if infix != "" || j > 0 {
|
||||||
|
fmt.Fprintf(f, ", ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, "T%d", j+1)
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, " any](")
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
if j > 0 {
|
||||||
|
fmt.Fprintf(f, ", ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, "t%d %s", j+1, hkt(fmt.Sprintf("T%d", j+1)))
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, ") %s {\n", hkt(tuple))
|
||||||
|
fmt.Fprintf(f, " return A.SequenceT%d(\n", i)
|
||||||
|
// map
|
||||||
|
fmt.Fprintf(f, " Map[")
|
||||||
|
if infix != "" {
|
||||||
|
fmt.Fprintf(f, "%s, T1,", infix)
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(f, "T1,")
|
||||||
|
}
|
||||||
|
for j := 1; j < i; j++ {
|
||||||
|
fmt.Fprintf(f, " func(T%d)", j+1)
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, " %s],\n", tuple)
|
||||||
|
// applicatives
|
||||||
|
for j := 1; j < i; j++ {
|
||||||
|
fmt.Fprintf(f, " Ap[")
|
||||||
|
for k := j + 1; k < i; k++ {
|
||||||
|
if k > j+1 {
|
||||||
|
fmt.Fprintf(f, " ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, "func(T%d)", k+1)
|
||||||
|
}
|
||||||
|
if j < i-1 {
|
||||||
|
fmt.Fprintf(f, " ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, "%s", tuple)
|
||||||
|
if infix != "" {
|
||||||
|
fmt.Fprintf(f, ", %s", infix)
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, ", T%d],\n", j+1)
|
||||||
|
}
|
||||||
|
for j := 0; j < i; j++ {
|
||||||
|
fmt.Fprintf(f, " t%d,\n", j+1)
|
||||||
|
}
|
||||||
|
fmt.Fprintf(f, " )\n")
|
||||||
|
fmt.Fprintf(f, "}\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -22,6 +22,10 @@ func generateOptionSequenceTuple(f *os.File, i int) {
|
|||||||
generateSequenceTuple1(optionHKT, "")(f, i)
|
generateSequenceTuple1(optionHKT, "")(f, i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateOptionSequenceT(f *os.File, i int) {
|
||||||
|
generateSequenceT1(optionHKT, "")(f, i)
|
||||||
|
}
|
||||||
|
|
||||||
func generateOptionize(f *os.File, i int) {
|
func generateOptionize(f *os.File, i int) {
|
||||||
// Create the optionize version
|
// Create the optionize version
|
||||||
fmt.Fprintf(f, "\n// Optionize%d converts a function with %d parameters returning a tuple of a return value R and a boolean into a function with %d parameters returning an Option[R]\n", i, i, i)
|
fmt.Fprintf(f, "\n// Optionize%d converts a function with %d parameters returning a tuple of a return value R and a boolean into a function with %d parameters returning an Option[R]\n", i, i, i)
|
||||||
@ -162,6 +166,8 @@ func optionize[R any](f func() (R, bool)) Option[R] {
|
|||||||
generateOptionize(f, i)
|
generateOptionize(f, i)
|
||||||
// unoptionize
|
// unoptionize
|
||||||
generateUnoptionize(f, i)
|
generateUnoptionize(f, i)
|
||||||
|
// sequenceT
|
||||||
|
generateOptionSequenceT(f, i)
|
||||||
// sequenceTuple
|
// sequenceTuple
|
||||||
generateOptionSequenceTuple(f, i)
|
generateOptionSequenceTuple(f, i)
|
||||||
// traverseTuple
|
// traverseTuple
|
||||||
|
@ -30,7 +30,12 @@ type (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
NewRequest = RIOE.Eitherize3(http.NewRequestWithContext)
|
// MakeRequest is an eitherized version of [http.NewRequestWithContext]
|
||||||
|
MakeRequest = RIOE.Eitherize3(http.NewRequestWithContext)
|
||||||
|
makeRequest = F.Bind13of3(MakeRequest)
|
||||||
|
|
||||||
|
// specialize
|
||||||
|
MakeGetRequest = makeRequest("GET", nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (client client) Do(req Requester) RIOE.ReaderIOEither[*http.Response] {
|
func (client client) Do(req Requester) RIOE.ReaderIOEither[*http.Response] {
|
||||||
@ -66,6 +71,21 @@ func ReadFullResponse(client Client) func(Requester) RIOE.ReaderIOEither[H.FullR
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func test(resp *http.Response) IOE.IOEither[error, H.FullResponse] {
|
||||||
|
// x := F.Pipe3(
|
||||||
|
// resp,
|
||||||
|
// T.Replicate2[*http.Response],
|
||||||
|
// T.Map2(
|
||||||
|
// IOE.Of[error, *http.Response],
|
||||||
|
// F.Flow3(
|
||||||
|
// H.GetBody,
|
||||||
|
// IOE.Of[error, io.ReadCloser],
|
||||||
|
// IOEF.ReadAll[io.ReadCloser],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// )
|
||||||
|
// }
|
||||||
|
|
||||||
// ReadAll sends a request and reads the response as bytes
|
// ReadAll sends a request and reads the response as bytes
|
||||||
func ReadAll(client Client) func(Requester) RIOE.ReaderIOEither[[]byte] {
|
func ReadAll(client Client) func(Requester) RIOE.ReaderIOEither[[]byte] {
|
||||||
return F.Flow2(
|
return F.Flow2(
|
||||||
|
@ -19,7 +19,7 @@ func TestSendSingleRequest(t *testing.T) {
|
|||||||
|
|
||||||
client := MakeClient(H.DefaultClient)
|
client := MakeClient(H.DefaultClient)
|
||||||
|
|
||||||
req1 := NewRequest("GET", "https://jsonplaceholder.typicode.com/posts/1", nil)
|
req1 := MakeGetRequest("https://jsonplaceholder.typicode.com/posts/1")
|
||||||
|
|
||||||
readItem := ReadJson[PostItem](client)
|
readItem := ReadJson[PostItem](client)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:22:56.8771166 +0200 CEST m=+0.010453601
|
// 2023-07-17 17:35:30.8817939 +0200 CEST m=+0.036907301
|
||||||
package either
|
package either
|
||||||
|
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ func Uneitherize1[F ~func(T0) Either[error, R], T0, R any](f F) func(T0) (R, err
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT1 converts 1 parameters of [Either[E, T]] into an [Either] of a [Tuple1].
|
// SequenceT1 converts 1 parameters of [Either[E, T]] into a [Either[E, Tuple1]].
|
||||||
func SequenceT1[E, T1 any](t1 Either[E, T1]) Either[E, T.Tuple1[T1]] {
|
func SequenceT1[E, T1 any](t1 Either[E, T1]) Either[E, T.Tuple1[T1]] {
|
||||||
return A.SequenceT1(
|
return A.SequenceT1(
|
||||||
Map[E, T1, T.Tuple1[T1]],
|
Map[E, T1, T.Tuple1[T1]],
|
||||||
@ -90,7 +90,7 @@ func Uneitherize2[F ~func(T0, T1) Either[error, R], T0, T1, R any](f F) func(T0,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT2 converts 2 parameters of [Either[E, T]] into an [Either] of a [Tuple2].
|
// SequenceT2 converts 2 parameters of [Either[E, T]] into a [Either[E, Tuple2]].
|
||||||
func SequenceT2[E, T1, T2 any](t1 Either[E, T1], t2 Either[E, T2]) Either[E, T.Tuple2[T1, T2]] {
|
func SequenceT2[E, T1, T2 any](t1 Either[E, T1], t2 Either[E, T2]) Either[E, T.Tuple2[T1, T2]] {
|
||||||
return A.SequenceT2(
|
return A.SequenceT2(
|
||||||
Map[E, T1, func(T2) T.Tuple2[T1, T2]],
|
Map[E, T1, func(T2) T.Tuple2[T1, T2]],
|
||||||
@ -140,7 +140,7 @@ func Uneitherize3[F ~func(T0, T1, T2) Either[error, R], T0, T1, T2, R any](f F)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT3 converts 3 parameters of [Either[E, T]] into an [Either] of a [Tuple3].
|
// SequenceT3 converts 3 parameters of [Either[E, T]] into a [Either[E, Tuple3]].
|
||||||
func SequenceT3[E, T1, T2, T3 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3]) Either[E, T.Tuple3[T1, T2, T3]] {
|
func SequenceT3[E, T1, T2, T3 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3]) Either[E, T.Tuple3[T1, T2, T3]] {
|
||||||
return A.SequenceT3(
|
return A.SequenceT3(
|
||||||
Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
Map[E, T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
||||||
@ -195,7 +195,7 @@ func Uneitherize4[F ~func(T0, T1, T2, T3) Either[error, R], T0, T1, T2, T3, R an
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT4 converts 4 parameters of [Either[E, T]] into an [Either] of a [Tuple4].
|
// SequenceT4 converts 4 parameters of [Either[E, T]] into a [Either[E, Tuple4]].
|
||||||
func SequenceT4[E, T1, T2, T3, T4 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4]) Either[E, T.Tuple4[T1, T2, T3, T4]] {
|
func SequenceT4[E, T1, T2, T3, T4 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4]) Either[E, T.Tuple4[T1, T2, T3, T4]] {
|
||||||
return A.SequenceT4(
|
return A.SequenceT4(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
Map[E, T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
||||||
@ -255,7 +255,7 @@ func Uneitherize5[F ~func(T0, T1, T2, T3, T4) Either[error, R], T0, T1, T2, T3,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT5 converts 5 parameters of [Either[E, T]] into an [Either] of a [Tuple5].
|
// SequenceT5 converts 5 parameters of [Either[E, T]] into a [Either[E, Tuple5]].
|
||||||
func SequenceT5[E, T1, T2, T3, T4, T5 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] {
|
func SequenceT5[E, T1, T2, T3, T4, T5 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5]) Either[E, T.Tuple5[T1, T2, T3, T4, T5]] {
|
||||||
return A.SequenceT5(
|
return A.SequenceT5(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
||||||
@ -320,7 +320,7 @@ func Uneitherize6[F ~func(T0, T1, T2, T3, T4, T5) Either[error, R], T0, T1, T2,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT6 converts 6 parameters of [Either[E, T]] into an [Either] of a [Tuple6].
|
// SequenceT6 converts 6 parameters of [Either[E, T]] into a [Either[E, Tuple6]].
|
||||||
func SequenceT6[E, T1, T2, T3, T4, T5, T6 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
func SequenceT6[E, T1, T2, T3, T4, T5, T6 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6]) Either[E, T.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||||
return A.SequenceT6(
|
return A.SequenceT6(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
||||||
@ -390,7 +390,7 @@ func Uneitherize7[F ~func(T0, T1, T2, T3, T4, T5, T6) Either[error, R], T0, T1,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT7 converts 7 parameters of [Either[E, T]] into an [Either] of a [Tuple7].
|
// SequenceT7 converts 7 parameters of [Either[E, T]] into a [Either[E, Tuple7]].
|
||||||
func SequenceT7[E, T1, T2, T3, T4, T5, T6, T7 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
func SequenceT7[E, T1, T2, T3, T4, T5, T6, T7 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7]) Either[E, T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||||
return A.SequenceT7(
|
return A.SequenceT7(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
||||||
@ -465,7 +465,7 @@ func Uneitherize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) Either[error, R], T0,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT8 converts 8 parameters of [Either[E, T]] into an [Either] of a [Tuple8].
|
// SequenceT8 converts 8 parameters of [Either[E, T]] into a [Either[E, Tuple8]].
|
||||||
func SequenceT8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
func SequenceT8[E, T1, T2, T3, T4, T5, T6, T7, T8 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8]) Either[E, T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||||
return A.SequenceT8(
|
return A.SequenceT8(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
||||||
@ -545,7 +545,7 @@ func Uneitherize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Either[error, R],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT9 converts 9 parameters of [Either[E, T]] into an [Either] of a [Tuple9].
|
// SequenceT9 converts 9 parameters of [Either[E, T]] into a [Either[E, Tuple9]].
|
||||||
func SequenceT9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
func SequenceT9[E, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9]) Either[E, T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||||
return A.SequenceT9(
|
return A.SequenceT9(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
||||||
@ -630,7 +630,7 @@ func Uneitherize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Either[error,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT10 converts 10 parameters of [Either[E, T]] into an [Either] of a [Tuple10].
|
// SequenceT10 converts 10 parameters of [Either[E, T]] into a [Either[E, Tuple10]].
|
||||||
func SequenceT10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9], t10 Either[E, T10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
func SequenceT10[E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 Either[E, T1], t2 Either[E, T2], t3 Either[E, T3], t4 Either[E, T4], t5 Either[E, T5], t6 Either[E, T6], t7 Either[E, T7], t8 Either[E, T8], t9 Either[E, T9], t10 Either[E, T10]) Either[E, T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||||
return A.SequenceT10(
|
return A.SequenceT10(
|
||||||
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
Map[E, T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:23:07.340967 +0200 CEST m=+0.009883801
|
// 2023-07-17 17:35:52.0895848 +0200 CEST m=+0.125356601
|
||||||
package function
|
package function
|
||||||
// Combinations for a total of 1 arguments
|
// Combinations for a total of 1 arguments
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:22:59.4952853 +0200 CEST m=+0.226069901
|
// 2023-07-17 17:35:38.6832268 +0200 CEST m=+0.043674901
|
||||||
package function
|
package function
|
||||||
|
|
||||||
// Pipe0 takes an initial value t0 and successively applies 0 functions where the input of a function is the return value of the previous function
|
// Pipe0 takes an initial value t0 and successively applies 0 functions where the input of a function is the return value of the previous function
|
||||||
|
@ -35,6 +35,16 @@ var (
|
|||||||
}),
|
}),
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
|
// ValidateJsonResponse checks if an HTTP response is a valid JSON response
|
||||||
|
ValidateJsonResponse = F.Flow2(
|
||||||
|
E.Of[error, *H.Response],
|
||||||
|
E.ChainFirst(F.Flow5(
|
||||||
|
GetHeader,
|
||||||
|
R.Lookup[H.Header](HeaderContentType),
|
||||||
|
O.Chain(A.First[string]),
|
||||||
|
E.FromOption[error, string](errors.OnNone("unable to access the [%s] header", HeaderContentType)),
|
||||||
|
E.ChainFirst(validateJsonContentTypeString),
|
||||||
|
)))
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -64,16 +74,3 @@ func isValidStatus(resp *H.Response) bool {
|
|||||||
func StatusCodeError(resp *H.Response) error {
|
func StatusCodeError(resp *H.Response) error {
|
||||||
return fmt.Errorf("invalid status code [%d] when accessing URL [%s]", resp.StatusCode, resp.Request.URL)
|
return fmt.Errorf("invalid status code [%d] when accessing URL [%s]", resp.StatusCode, resp.Request.URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateJsonResponse checks if an HTTP response is a valid JSON response
|
|
||||||
func ValidateJsonResponse(resp *H.Response) E.Either[error, *H.Response] {
|
|
||||||
return F.Pipe6(
|
|
||||||
resp,
|
|
||||||
GetHeader,
|
|
||||||
R.Lookup[H.Header](HeaderContentType),
|
|
||||||
O.Chain(A.First[string]),
|
|
||||||
E.FromOption[error, string](errors.OnNone("unable to access the [%s] header", HeaderContentType)),
|
|
||||||
E.ChainFirst(validateJsonContentTypeString),
|
|
||||||
E.MapTo[error, string](resp),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
3
identity/doc.go
Normal file
3
identity/doc.go
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
package identity
|
||||||
|
|
||||||
|
//go:generate go run .. identity --count 10 --filename gen.go
|
505
identity/gen.go
Normal file
505
identity/gen.go
Normal file
@ -0,0 +1,505 @@
|
|||||||
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
|
// This file was generated by robots at
|
||||||
|
// 2023-07-17 17:36:02.7073931 +0200 CEST m=+0.136048201
|
||||||
|
package identity
|
||||||
|
|
||||||
|
|
||||||
|
import (
|
||||||
|
A "github.com/ibm/fp-go/internal/apply"
|
||||||
|
T "github.com/ibm/fp-go/tuple"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SequenceT1 converts 1 parameters of [T] into a [Tuple1].
|
||||||
|
func SequenceT1[T1 any](t1 T1) T.Tuple1[T1] {
|
||||||
|
return A.SequenceT1(
|
||||||
|
Map[T1, T.Tuple1[T1]],
|
||||||
|
t1,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple1 converts a [Tuple1] of [T] into an [Tuple1].
|
||||||
|
func SequenceTuple1[T1 any](t T.Tuple1[T1]) T.Tuple1[T1] {
|
||||||
|
return A.SequenceTuple1(
|
||||||
|
Map[T1, T.Tuple1[T1]],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple1 converts a [Tuple1] of [A] via transformation functions transforming [A] to [A] into a [Tuple1].
|
||||||
|
func TraverseTuple1[F1 ~func(A1) T1, A1, T1 any](f1 F1) func (T.Tuple1[A1]) T.Tuple1[T1] {
|
||||||
|
return func(t T.Tuple1[A1]) T.Tuple1[T1] {
|
||||||
|
return A.TraverseTuple1(
|
||||||
|
Map[T1, T.Tuple1[T1]],
|
||||||
|
f1,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT2 converts 2 parameters of [T] into a [Tuple2].
|
||||||
|
func SequenceT2[T1, T2 any](t1 T1, t2 T2) T.Tuple2[T1, T2] {
|
||||||
|
return A.SequenceT2(
|
||||||
|
Map[T1, func(T2) T.Tuple2[T1, T2]],
|
||||||
|
Ap[T.Tuple2[T1, T2], T2],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple2 converts a [Tuple2] of [T] into an [Tuple2].
|
||||||
|
func SequenceTuple2[T1, T2 any](t T.Tuple2[T1, T2]) T.Tuple2[T1, T2] {
|
||||||
|
return A.SequenceTuple2(
|
||||||
|
Map[T1, func(T2) T.Tuple2[T1, T2]],
|
||||||
|
Ap[T.Tuple2[T1, T2], T2],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple2 converts a [Tuple2] of [A] via transformation functions transforming [A] to [A] into a [Tuple2].
|
||||||
|
func TraverseTuple2[F1 ~func(A1) T1, F2 ~func(A2) T2, A1, T1, A2, T2 any](f1 F1, f2 F2) func (T.Tuple2[A1, A2]) T.Tuple2[T1, T2] {
|
||||||
|
return func(t T.Tuple2[A1, A2]) T.Tuple2[T1, T2] {
|
||||||
|
return A.TraverseTuple2(
|
||||||
|
Map[T1, func(T2) T.Tuple2[T1, T2]],
|
||||||
|
Ap[T.Tuple2[T1, T2], T2],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT3 converts 3 parameters of [T] into a [Tuple3].
|
||||||
|
func SequenceT3[T1, T2, T3 any](t1 T1, t2 T2, t3 T3) T.Tuple3[T1, T2, T3] {
|
||||||
|
return A.SequenceT3(
|
||||||
|
Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
||||||
|
Ap[func(T3) T.Tuple3[T1, T2, T3], T2],
|
||||||
|
Ap[T.Tuple3[T1, T2, T3], T3],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple3 converts a [Tuple3] of [T] into an [Tuple3].
|
||||||
|
func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[T1, T2, T3]) T.Tuple3[T1, T2, T3] {
|
||||||
|
return A.SequenceTuple3(
|
||||||
|
Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
||||||
|
Ap[func(T3) T.Tuple3[T1, T2, T3], T2],
|
||||||
|
Ap[T.Tuple3[T1, T2, T3], T3],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple3 converts a [Tuple3] of [A] via transformation functions transforming [A] to [A] into a [Tuple3].
|
||||||
|
func TraverseTuple3[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, A1, T1, A2, T2, A3, T3 any](f1 F1, f2 F2, f3 F3) func (T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] {
|
||||||
|
return func(t T.Tuple3[A1, A2, A3]) T.Tuple3[T1, T2, T3] {
|
||||||
|
return A.TraverseTuple3(
|
||||||
|
Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
||||||
|
Ap[func(T3) T.Tuple3[T1, T2, T3], T2],
|
||||||
|
Ap[T.Tuple3[T1, T2, T3], T3],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT4 converts 4 parameters of [T] into a [Tuple4].
|
||||||
|
func SequenceT4[T1, T2, T3, T4 any](t1 T1, t2 T2, t3 T3, t4 T4) T.Tuple4[T1, T2, T3, T4] {
|
||||||
|
return A.SequenceT4(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
||||||
|
Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2],
|
||||||
|
Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3],
|
||||||
|
Ap[T.Tuple4[T1, T2, T3, T4], T4],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple4 converts a [Tuple4] of [T] into an [Tuple4].
|
||||||
|
func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[T1, T2, T3, T4]) T.Tuple4[T1, T2, T3, T4] {
|
||||||
|
return A.SequenceTuple4(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
||||||
|
Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2],
|
||||||
|
Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3],
|
||||||
|
Ap[T.Tuple4[T1, T2, T3, T4], T4],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple4 converts a [Tuple4] of [A] via transformation functions transforming [A] to [A] into a [Tuple4].
|
||||||
|
func TraverseTuple4[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, A1, T1, A2, T2, A3, T3, A4, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func (T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] {
|
||||||
|
return func(t T.Tuple4[A1, A2, A3, A4]) T.Tuple4[T1, T2, T3, T4] {
|
||||||
|
return A.TraverseTuple4(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
||||||
|
Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2],
|
||||||
|
Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3],
|
||||||
|
Ap[T.Tuple4[T1, T2, T3, T4], T4],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT5 converts 5 parameters of [T] into a [Tuple5].
|
||||||
|
func SequenceT5[T1, T2, T3, T4, T5 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5) T.Tuple5[T1, T2, T3, T4, T5] {
|
||||||
|
return A.SequenceT5(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2],
|
||||||
|
Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||||
|
Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||||
|
Ap[T.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple5 converts a [Tuple5] of [T] into an [Tuple5].
|
||||||
|
func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[T1, T2, T3, T4, T5]) T.Tuple5[T1, T2, T3, T4, T5] {
|
||||||
|
return A.SequenceTuple5(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2],
|
||||||
|
Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||||
|
Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||||
|
Ap[T.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple5 converts a [Tuple5] of [A] via transformation functions transforming [A] to [A] into a [Tuple5].
|
||||||
|
func TraverseTuple5[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func (T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] {
|
||||||
|
return func(t T.Tuple5[A1, A2, A3, A4, A5]) T.Tuple5[T1, T2, T3, T4, T5] {
|
||||||
|
return A.TraverseTuple5(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2],
|
||||||
|
Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||||
|
Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||||
|
Ap[T.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT6 converts 6 parameters of [T] into a [Tuple6].
|
||||||
|
func SequenceT6[T1, T2, T3, T4, T5, T6 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6) T.Tuple6[T1, T2, T3, T4, T5, T6] {
|
||||||
|
return A.SequenceT6(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||||
|
Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||||
|
Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||||
|
Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple6 converts a [Tuple6] of [T] into an [Tuple6].
|
||||||
|
func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[T1, T2, T3, T4, T5, T6]) T.Tuple6[T1, T2, T3, T4, T5, T6] {
|
||||||
|
return A.SequenceTuple6(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||||
|
Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||||
|
Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||||
|
Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple6 converts a [Tuple6] of [A] via transformation functions transforming [A] to [A] into a [Tuple6].
|
||||||
|
func TraverseTuple6[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func (T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] {
|
||||||
|
return func(t T.Tuple6[A1, A2, A3, A4, A5, A6]) T.Tuple6[T1, T2, T3, T4, T5, T6] {
|
||||||
|
return A.TraverseTuple6(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||||
|
Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||||
|
Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||||
|
Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
f6,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT7 converts 7 parameters of [T] into a [Tuple7].
|
||||||
|
func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] {
|
||||||
|
return A.SequenceT7(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||||
|
Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||||
|
Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||||
|
Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple7 converts a [Tuple7] of [T] into an [Tuple7].
|
||||||
|
func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[T1, T2, T3, T4, T5, T6, T7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] {
|
||||||
|
return A.SequenceTuple7(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||||
|
Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||||
|
Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||||
|
Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple7 converts a [Tuple7] of [A] via transformation functions transforming [A] to [A] into a [Tuple7].
|
||||||
|
func TraverseTuple7[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func (T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] {
|
||||||
|
return func(t T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) T.Tuple7[T1, T2, T3, T4, T5, T6, T7] {
|
||||||
|
return A.TraverseTuple7(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||||
|
Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||||
|
Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||||
|
Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
f6,
|
||||||
|
f7,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT8 converts 8 parameters of [T] into a [Tuple8].
|
||||||
|
func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] {
|
||||||
|
return A.SequenceT8(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||||
|
Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||||
|
Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||||
|
Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple8 converts a [Tuple8] of [T] into an [Tuple8].
|
||||||
|
func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] {
|
||||||
|
return A.SequenceTuple8(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||||
|
Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||||
|
Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||||
|
Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple8 converts a [Tuple8] of [A] via transformation functions transforming [A] to [A] into a [Tuple8].
|
||||||
|
func TraverseTuple8[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func (T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] {
|
||||||
|
return func(t T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] {
|
||||||
|
return A.TraverseTuple8(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||||
|
Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||||
|
Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||||
|
Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
f6,
|
||||||
|
f7,
|
||||||
|
f8,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT9 converts 9 parameters of [T] into a [Tuple9].
|
||||||
|
func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] {
|
||||||
|
return A.SequenceT9(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||||
|
Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||||
|
Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||||
|
Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
t9,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple9 converts a [Tuple9] of [T] into an [Tuple9].
|
||||||
|
func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] {
|
||||||
|
return A.SequenceTuple9(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||||
|
Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||||
|
Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||||
|
Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple9 converts a [Tuple9] of [A] via transformation functions transforming [A] to [A] into a [Tuple9].
|
||||||
|
func TraverseTuple9[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func (T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] {
|
||||||
|
return func(t T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9] {
|
||||||
|
return A.TraverseTuple9(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||||
|
Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||||
|
Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||||
|
Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
f6,
|
||||||
|
f7,
|
||||||
|
f8,
|
||||||
|
f9,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceT10 converts 10 parameters of [T] into a [Tuple10].
|
||||||
|
func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 T1, t2 T2, t3 T3, t4 T4, t5 T5, t6 T6, t7 T7, t8 T8, t9 T9, t10 T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] {
|
||||||
|
return A.SequenceT10(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||||
|
Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||||
|
Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||||
|
Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||||
|
Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
t9,
|
||||||
|
t10,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SequenceTuple10 converts a [Tuple10] of [T] into an [Tuple10].
|
||||||
|
func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] {
|
||||||
|
return A.SequenceTuple10(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||||
|
Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||||
|
Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||||
|
Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||||
|
Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseTuple10 converts a [Tuple10] of [A] via transformation functions transforming [A] to [A] into a [Tuple10].
|
||||||
|
func TraverseTuple10[F1 ~func(A1) T1, F2 ~func(A2) T2, F3 ~func(A3) T3, F4 ~func(A4) T4, F5 ~func(A5) T5, F6 ~func(A6) T6, F7 ~func(A7) T7, F8 ~func(A8) T8, F9 ~func(A9) T9, F10 ~func(A10) T10, A1, T1, A2, T2, A3, T3, A4, T4, A5, T5, A6, T6, A7, T7, A8, T8, A9, T9, A10, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func (T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] {
|
||||||
|
return func(t T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] {
|
||||||
|
return A.TraverseTuple10(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||||
|
Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||||
|
Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||||
|
Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||||
|
Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||||
|
f1,
|
||||||
|
f2,
|
||||||
|
f3,
|
||||||
|
f4,
|
||||||
|
f5,
|
||||||
|
f6,
|
||||||
|
f7,
|
||||||
|
f8,
|
||||||
|
f9,
|
||||||
|
f10,
|
||||||
|
t,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:23:10.9739695 +0200 CEST m=+0.014155801
|
// 2023-07-17 17:36:29.7966147 +0200 CEST m=+0.102380501
|
||||||
package apply
|
package apply
|
||||||
|
|
||||||
|
|
||||||
|
172
option/gen.go
172
option/gen.go
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:23:13.386184 +0200 CEST m=+0.015046301
|
// 2023-07-17 17:36:37.8185556 +0200 CEST m=+0.131678801
|
||||||
package option
|
package option
|
||||||
|
|
||||||
|
|
||||||
@ -48,6 +48,14 @@ func Unoptionize1[F ~func(T0) Option[R], T0, R any](f F) func(T0) (R, bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT1 converts 1 parameters of [Option[T]] into a [Option[Tuple1]].
|
||||||
|
func SequenceT1[T1 any](t1 Option[T1]) Option[T.Tuple1[T1]] {
|
||||||
|
return A.SequenceT1(
|
||||||
|
Map[T1, T.Tuple1[T1]],
|
||||||
|
t1,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple1 converts a [Tuple1] of [Option[T]] into an [Option[Tuple1]].
|
// SequenceTuple1 converts a [Tuple1] of [Option[T]] into an [Option[Tuple1]].
|
||||||
func SequenceTuple1[T1 any](t T.Tuple1[Option[T1]]) Option[T.Tuple1[T1]] {
|
func SequenceTuple1[T1 any](t T.Tuple1[Option[T1]]) Option[T.Tuple1[T1]] {
|
||||||
return A.SequenceTuple1(
|
return A.SequenceTuple1(
|
||||||
@ -83,6 +91,16 @@ func Unoptionize2[F ~func(T0, T1) Option[R], T0, T1, R any](f F) func(T0, T1) (R
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT2 converts 2 parameters of [Option[T]] into a [Option[Tuple2]].
|
||||||
|
func SequenceT2[T1, T2 any](t1 Option[T1], t2 Option[T2]) Option[T.Tuple2[T1, T2]] {
|
||||||
|
return A.SequenceT2(
|
||||||
|
Map[T1, func(T2) T.Tuple2[T1, T2]],
|
||||||
|
Ap[T.Tuple2[T1, T2], T2],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple2 converts a [Tuple2] of [Option[T]] into an [Option[Tuple2]].
|
// SequenceTuple2 converts a [Tuple2] of [Option[T]] into an [Option[Tuple2]].
|
||||||
func SequenceTuple2[T1, T2 any](t T.Tuple2[Option[T1], Option[T2]]) Option[T.Tuple2[T1, T2]] {
|
func SequenceTuple2[T1, T2 any](t T.Tuple2[Option[T1], Option[T2]]) Option[T.Tuple2[T1, T2]] {
|
||||||
return A.SequenceTuple2(
|
return A.SequenceTuple2(
|
||||||
@ -121,6 +139,18 @@ func Unoptionize3[F ~func(T0, T1, T2) Option[R], T0, T1, T2, R any](f F) func(T0
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT3 converts 3 parameters of [Option[T]] into a [Option[Tuple3]].
|
||||||
|
func SequenceT3[T1, T2, T3 any](t1 Option[T1], t2 Option[T2], t3 Option[T3]) Option[T.Tuple3[T1, T2, T3]] {
|
||||||
|
return A.SequenceT3(
|
||||||
|
Map[T1, func(T2) func(T3) T.Tuple3[T1, T2, T3]],
|
||||||
|
Ap[func(T3) T.Tuple3[T1, T2, T3], T2],
|
||||||
|
Ap[T.Tuple3[T1, T2, T3], T3],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple3 converts a [Tuple3] of [Option[T]] into an [Option[Tuple3]].
|
// SequenceTuple3 converts a [Tuple3] of [Option[T]] into an [Option[Tuple3]].
|
||||||
func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[Option[T1], Option[T2], Option[T3]]) Option[T.Tuple3[T1, T2, T3]] {
|
func SequenceTuple3[T1, T2, T3 any](t T.Tuple3[Option[T1], Option[T2], Option[T3]]) Option[T.Tuple3[T1, T2, T3]] {
|
||||||
return A.SequenceTuple3(
|
return A.SequenceTuple3(
|
||||||
@ -162,6 +192,20 @@ func Unoptionize4[F ~func(T0, T1, T2, T3) Option[R], T0, T1, T2, T3, R any](f F)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT4 converts 4 parameters of [Option[T]] into a [Option[Tuple4]].
|
||||||
|
func SequenceT4[T1, T2, T3, T4 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4]) Option[T.Tuple4[T1, T2, T3, T4]] {
|
||||||
|
return A.SequenceT4(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) T.Tuple4[T1, T2, T3, T4]],
|
||||||
|
Ap[func(T3) func(T4) T.Tuple4[T1, T2, T3, T4], T2],
|
||||||
|
Ap[func(T4) T.Tuple4[T1, T2, T3, T4], T3],
|
||||||
|
Ap[T.Tuple4[T1, T2, T3, T4], T4],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple4 converts a [Tuple4] of [Option[T]] into an [Option[Tuple4]].
|
// SequenceTuple4 converts a [Tuple4] of [Option[T]] into an [Option[Tuple4]].
|
||||||
func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[Option[T1], Option[T2], Option[T3], Option[T4]]) Option[T.Tuple4[T1, T2, T3, T4]] {
|
func SequenceTuple4[T1, T2, T3, T4 any](t T.Tuple4[Option[T1], Option[T2], Option[T3], Option[T4]]) Option[T.Tuple4[T1, T2, T3, T4]] {
|
||||||
return A.SequenceTuple4(
|
return A.SequenceTuple4(
|
||||||
@ -206,6 +250,22 @@ func Unoptionize5[F ~func(T0, T1, T2, T3, T4) Option[R], T0, T1, T2, T3, T4, R a
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT5 converts 5 parameters of [Option[T]] into a [Option[Tuple5]].
|
||||||
|
func SequenceT5[T1, T2, T3, T4, T5 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5]) Option[T.Tuple5[T1, T2, T3, T4, T5]] {
|
||||||
|
return A.SequenceT5(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T2],
|
||||||
|
Ap[func(T4) func(T5) T.Tuple5[T1, T2, T3, T4, T5], T3],
|
||||||
|
Ap[func(T5) T.Tuple5[T1, T2, T3, T4, T5], T4],
|
||||||
|
Ap[T.Tuple5[T1, T2, T3, T4, T5], T5],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple5 converts a [Tuple5] of [Option[T]] into an [Option[Tuple5]].
|
// SequenceTuple5 converts a [Tuple5] of [Option[T]] into an [Option[Tuple5]].
|
||||||
func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5]]) Option[T.Tuple5[T1, T2, T3, T4, T5]] {
|
func SequenceTuple5[T1, T2, T3, T4, T5 any](t T.Tuple5[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5]]) Option[T.Tuple5[T1, T2, T3, T4, T5]] {
|
||||||
return A.SequenceTuple5(
|
return A.SequenceTuple5(
|
||||||
@ -253,6 +313,24 @@ func Unoptionize6[F ~func(T0, T1, T2, T3, T4, T5) Option[R], T0, T1, T2, T3, T4,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT6 converts 6 parameters of [Option[T]] into a [Option[Tuple6]].
|
||||||
|
func SequenceT6[T1, T2, T3, T4, T5, T6 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||||
|
return A.SequenceT6(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T3],
|
||||||
|
Ap[func(T5) func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T4],
|
||||||
|
Ap[func(T6) T.Tuple6[T1, T2, T3, T4, T5, T6], T5],
|
||||||
|
Ap[T.Tuple6[T1, T2, T3, T4, T5, T6], T6],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple6 converts a [Tuple6] of [Option[T]] into an [Option[Tuple6]].
|
// SequenceTuple6 converts a [Tuple6] of [Option[T]] into an [Option[Tuple6]].
|
||||||
func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6]]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
func SequenceTuple6[T1, T2, T3, T4, T5, T6 any](t T.Tuple6[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6]]) Option[T.Tuple6[T1, T2, T3, T4, T5, T6]] {
|
||||||
return A.SequenceTuple6(
|
return A.SequenceTuple6(
|
||||||
@ -303,6 +381,26 @@ func Unoptionize7[F ~func(T0, T1, T2, T3, T4, T5, T6) Option[R], T0, T1, T2, T3,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT7 converts 7 parameters of [Option[T]] into a [Option[Tuple7]].
|
||||||
|
func SequenceT7[T1, T2, T3, T4, T5, T6, T7 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||||
|
return A.SequenceT7(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T4],
|
||||||
|
Ap[func(T6) func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T5],
|
||||||
|
Ap[func(T7) T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T6],
|
||||||
|
Ap[T.Tuple7[T1, T2, T3, T4, T5, T6, T7], T7],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple7 converts a [Tuple7] of [Option[T]] into an [Option[Tuple7]].
|
// SequenceTuple7 converts a [Tuple7] of [Option[T]] into an [Option[Tuple7]].
|
||||||
func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7]]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
func SequenceTuple7[T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7]]) Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]] {
|
||||||
return A.SequenceTuple7(
|
return A.SequenceTuple7(
|
||||||
@ -356,6 +454,28 @@ func Unoptionize8[F ~func(T0, T1, T2, T3, T4, T5, T6, T7) Option[R], T0, T1, T2,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT8 converts 8 parameters of [Option[T]] into a [Option[Tuple8]].
|
||||||
|
func SequenceT8[T1, T2, T3, T4, T5, T6, T7, T8 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||||
|
return A.SequenceT8(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T5],
|
||||||
|
Ap[func(T7) func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T6],
|
||||||
|
Ap[func(T8) T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T7],
|
||||||
|
Ap[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8], T8],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple8 converts a [Tuple8] of [Option[T]] into an [Option[Tuple8]].
|
// SequenceTuple8 converts a [Tuple8] of [Option[T]] into an [Option[Tuple8]].
|
||||||
func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8]]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
func SequenceTuple8[T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8]]) Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]] {
|
||||||
return A.SequenceTuple8(
|
return A.SequenceTuple8(
|
||||||
@ -412,6 +532,30 @@ func Unoptionize9[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8) Option[R], T0, T1,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT9 converts 9 parameters of [Option[T]] into a [Option[Tuple9]].
|
||||||
|
func SequenceT9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8], t9 Option[T9]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||||
|
return A.SequenceT9(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T6],
|
||||||
|
Ap[func(T8) func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T7],
|
||||||
|
Ap[func(T9) T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T8],
|
||||||
|
Ap[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9], T9],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
t9,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple9 converts a [Tuple9] of [Option[T]] into an [Option[Tuple9]].
|
// SequenceTuple9 converts a [Tuple9] of [Option[T]] into an [Option[Tuple9]].
|
||||||
func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9]]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
func SequenceTuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9]]) Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] {
|
||||||
return A.SequenceTuple9(
|
return A.SequenceTuple9(
|
||||||
@ -471,6 +615,32 @@ func Unoptionize10[F ~func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) Option[R], T0
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SequenceT10 converts 10 parameters of [Option[T]] into a [Option[Tuple10]].
|
||||||
|
func SequenceT10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t1 Option[T1], t2 Option[T2], t3 Option[T3], t4 Option[T4], t5 Option[T5], t6 Option[T6], t7 Option[T7], t8 Option[T8], t9 Option[T9], t10 Option[T10]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||||
|
return A.SequenceT10(
|
||||||
|
Map[T1, func(T2) func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]],
|
||||||
|
Ap[func(T3) func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T2],
|
||||||
|
Ap[func(T4) func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T3],
|
||||||
|
Ap[func(T5) func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T4],
|
||||||
|
Ap[func(T6) func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T5],
|
||||||
|
Ap[func(T7) func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T6],
|
||||||
|
Ap[func(T8) func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T7],
|
||||||
|
Ap[func(T9) func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T8],
|
||||||
|
Ap[func(T10) T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T9],
|
||||||
|
Ap[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], T10],
|
||||||
|
t1,
|
||||||
|
t2,
|
||||||
|
t3,
|
||||||
|
t4,
|
||||||
|
t5,
|
||||||
|
t6,
|
||||||
|
t7,
|
||||||
|
t8,
|
||||||
|
t9,
|
||||||
|
t10,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// SequenceTuple10 converts a [Tuple10] of [Option[T]] into an [Option[Tuple10]].
|
// SequenceTuple10 converts a [Tuple10] of [Option[T]] into an [Option[Tuple10]].
|
||||||
func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9], Option[T10]]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
func SequenceTuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[Option[T1], Option[T2], Option[T3], Option[T4], Option[T5], Option[T6], Option[T7], Option[T8], Option[T9], Option[T10]]) Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] {
|
||||||
return A.SequenceTuple10(
|
return A.SequenceTuple10(
|
||||||
|
@ -2,8 +2,6 @@ package option
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
F "github.com/ibm/fp-go/function"
|
F "github.com/ibm/fp-go/function"
|
||||||
"github.com/ibm/fp-go/internal/apply"
|
|
||||||
T "github.com/ibm/fp-go/tuple"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// HKTA = HKT<A>
|
// HKTA = HKT<A>
|
||||||
@ -16,43 +14,3 @@ func Sequence[A, HKTA, HKTOA any](
|
|||||||
) func(Option[HKTA]) HKTOA {
|
) func(Option[HKTA]) HKTOA {
|
||||||
return Fold(F.Nullary2(None[A], _of), F.Bind2nd(_map, Some[A]))
|
return Fold(F.Nullary2(None[A], _of), F.Bind2nd(_map, Some[A]))
|
||||||
}
|
}
|
||||||
|
|
||||||
// SequenceT converts n inputs of higher kinded types into a higher kinded types of n strongly typed values, represented as a tuple
|
|
||||||
|
|
||||||
func SequenceT1[A any](a Option[A]) Option[T.Tuple1[A]] {
|
|
||||||
return apply.SequenceT1(
|
|
||||||
Map[A, T.Tuple1[A]],
|
|
||||||
|
|
||||||
a,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func SequenceT2[A, B any](a Option[A], b Option[B]) Option[T.Tuple2[A, B]] {
|
|
||||||
return apply.SequenceT2(
|
|
||||||
Map[A, func(B) T.Tuple2[A, B]],
|
|
||||||
Ap[T.Tuple2[A, B], B],
|
|
||||||
|
|
||||||
a, b,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func SequenceT3[A, B, C any](a Option[A], b Option[B], c Option[C]) Option[T.Tuple3[A, B, C]] {
|
|
||||||
return apply.SequenceT3(
|
|
||||||
Map[A, func(B) func(C) T.Tuple3[A, B, C]],
|
|
||||||
Ap[func(C) T.Tuple3[A, B, C], B],
|
|
||||||
Ap[T.Tuple3[A, B, C], C],
|
|
||||||
|
|
||||||
a, b, c,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func SequenceT4[A, B, C, D any](a Option[A], b Option[B], c Option[C], d Option[D]) Option[T.Tuple4[A, B, C, D]] {
|
|
||||||
return apply.SequenceT4(
|
|
||||||
Map[A, func(B) func(C) func(D) T.Tuple4[A, B, C, D]],
|
|
||||||
Ap[func(C) func(D) T.Tuple4[A, B, C, D], B],
|
|
||||||
Ap[func(D) T.Tuple4[A, B, C, D], C],
|
|
||||||
Ap[T.Tuple4[A, B, C, D], D],
|
|
||||||
|
|
||||||
a, b, c, d,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Code generated by go generate; DO NOT EDIT.
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
// This file was generated by robots at
|
// This file was generated by robots at
|
||||||
// 2023-07-17 13:23:15.4992602 +0200 CEST m=+0.068393801
|
// 2023-07-17 17:36:57.1507964 +0200 CEST m=+0.013497601
|
||||||
package tuple
|
package tuple
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user