Iooption

iooption/generic

Code generated by go generate; DO NOT EDIT.

import "github.com/IBM/fp-go/iooption/generic"

Code generated by go generate; DO NOT EDIT. This file was generated by robots at 2024-02-29 16:19:16.8032769 +0100 CET m=+0.063217501

Functions

func After[GA ~func() O.Option[A], A any](timestamp time.Time) func(GA) GA

After creates an operation that passes after the given [time.Time]

func Alt[LAZY ~func() GIOA, GIOA ~func() O.Option[A], A any](second LAZY) func(GIOA) GIOA

func Ap[GB ~func() O.Option[B], GAB ~func() O.Option[func(A) B], GA ~func() O.Option[A], A, B any](ma GA) func(GAB) GB

func ApS[GS1 ~func() O.Option[S1], GS2 ~func() O.Option[S2], GT ~func() O.Option[T], S1, S2, T any]( setter func(T) func(S1) S2, fa GT, ) func(GS1) GS2

ApS attaches a value to a context [S1] to produce a context [S2] by considering the context and the value concurrently

func Bind[GS1 ~func() O.Option[S1], GS2 ~func() O.Option[S2], GT ~func() O.Option[T], S1, S2, T any]( setter func(T) func(S1) S2, f func(S1) GT, ) func(GS1) GS2

Bind attaches the result of a computation to a context [S1] to produce a context [S2]

func BindTo[GS1 ~func() O.Option[S1], GT ~func() O.Option[T], S1, T any]( setter func(T) S1, ) func(GT) GS1

BindTo initializes a new state [S1] from a value [T]

func Bracket[ GA ~func() O.Option[A], GB ~func() O.Option[B], GANY ~func() O.Option[ANY], A, B, ANY any]( acquire GA, use func(A) GB, release func(A, O.Option[B]) GANY, ) GB

Bracket makes sure that a resource is cleaned up in the event of an error. The release action is called regardless of whether the body action returns and error or not.

func Chain[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](f func(A) GB) func(GA) GB

func ChainFirst[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](f func(A) GB) func(GA) GA

ChainFirst runs the monad returned by the function but returns the result of the original monad

func ChainFirstIOK[GA ~func() O.Option[A], GIOB ~func() B, A, B any](f func(A) GIOB) func(GA) GA

ChainFirstIOK runs the monad returned by the function but returns the result of the original monad

func ChainIOK[GA ~func() O.Option[A], GB ~func() O.Option[B], GR ~func() B, A, B any](f func(A) GR) func(GA) GB

func ChainOptionK[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](f func(A) O.Option[B]) func(GA) GB

func Defer[GA ~func() O.Option[A], A any](gen func() GA) GA

Defer creates an IO by creating a brand new IO via a generator function, each time

func Delay[GA ~func() O.Option[A], A any](delay time.Duration) func(GA) GA

Delay creates an operation that passes in the value after some delay

func Do[GS ~func() O.Option[S], S any]( empty S, ) GS

Bind creates an empty context of type [S] to be used with the [Bind] operation

func Eq[GA ~func() O.Option[A], A any](e EQ.Eq[A]) EQ.Eq[GA]

Eq implements the equals predicate for values contained in the IO monad

func Flatten[GA ~func() O.Option[A], GAA ~func() O.Option[GA], A any](mma GAA) GA

func Fold[GA ~func() O.Option[A], GB ~func() B, A, B any](onNone func() GB, onSome func(A) GB) func(GA) GB

Fold convers an IOOption into an IO

func FromEither[GA ~func() O.Option[A], E, A any](e ET.Either[E, A]) GA

func FromIO[GA ~func() O.Option[A], GR ~func() A, A any](mr GR) GA

func FromOption[GA ~func() O.Option[A], A any](o O.Option[A]) GA

func FromStrictEquals[GA ~func() O.Option[A], A comparable]() EQ.Eq[GA]

FromStrictEquals constructs an [EQ.Eq] from the canonical comparison function

func Let[GS1 ~func() O.Option[S1], GS2 ~func() O.Option[S2], S1, S2, T any]( key func(T) func(S1) S2, f func(S1) T, ) func(GS1) GS2

Let attaches the result of a computation to a context [S1] to produce a context [S2]

func LetTo[GS1 ~func() O.Option[S1], GS2 ~func() O.Option[S2], S1, S2, B any]( key func(B) func(S1) S2, b B, ) func(GS1) GS2

LetTo attaches the a value to a context [S1] to produce a context [S2]

func MakeIO[GA ~func() O.Option[A], A any](f GA) GA

func Map[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](f func(A) B) func(GA) GB

func Memoize[GA ~func() O.Option[A], A any](ma GA) GA

Memoize computes the value of the provided IO monad lazily but exactly once

func MonadAlt[LAZY ~func() GIOA, GIOA ~func() O.Option[A], A any](first GIOA, second LAZY) GIOA

func MonadAp[GB ~func() O.Option[B], GAB ~func() O.Option[func(A) B], GA ~func() O.Option[A], A, B any](mab GAB, ma GA) GB

func MonadChain[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](fa GA, f func(A) GB) GB

func MonadChainFirst[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](ma GA, f func(A) GB) GA

MonadChainFirst runs the monad returned by the function but returns the result of the original monad

func MonadChainFirstIOK[GA ~func() O.Option[A], GIOB ~func() B, A, B any](first GA, f func(A) GIOB) GA

MonadChainFirstIOK runs the monad returned by the function but returns the result of the original monad

func MonadChainIOK[GA ~func() O.Option[A], GB ~func() O.Option[B], GR ~func() B, A, B any](ma GA, f func(A) GR) GB

func MonadChainOptionK[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](ma GA, f func(A) O.Option[B]) GB

func MonadMap[GA ~func() O.Option[A], GB ~func() O.Option[B], A, B any](fa GA, f func(A) B) GB

func MonadOf[GA ~func() O.Option[A], A any](r A) GA

func None[GA ~func() O.Option[A], A any]() GA

func Of[GA ~func() O.Option[A], A any](r A) GA

func Optionize0[GA ~func() O.Option[A], A any](f func() (A, bool)) func() GA

func Optionize1[GA ~func() O.Option[A], T1, A any](f func(t1 T1) (A, bool)) func(T1) GA

func Optionize2[GA ~func() O.Option[A], T1, T2, A any](f func(t1 T1, t2 T2) (A, bool)) func(T1, T2) GA

func Optionize3[GA ~func() O.Option[A], T1, T2, T3, A any](f func(t1 T1, t2 T2, t3 T3) (A, bool)) func(T1, T2, T3) GA

func Optionize4[GA ~func() O.Option[A], T1, T2, T3, T4, A any](f func(t1 T1, t2 T2, t3 T3, t4 T4) (A, bool)) func(T1, T2, T3, T4) GA

func Retrying[GA ~func() O.Option[A], A any]( policy R.RetryPolicy, action func(R.RetryStatus) GA, check func(A) bool, ) GA

Retry combinator for actions that don't raise exceptions, but signal in their type the outcome has failed. Examples are the Option, Either and EitherT monads.

func SequenceArray[TB ~func() O.Option[B], TBS ~func() O.Option[GB], GA ~[]TB, GB ~[]B, A, B any](ma GA) TBS

func SequenceT1[ G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], G_T1 ~func() O.Option[T1], T1 any]( t1 G_T1, ) G_TUPLE1

SequenceT1 converts 1 [func() O.Option[T]] into a [func() O.Option[T.Tuple1[T1]]]

func SequenceT10[ G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], G_T10 ~func() O.Option[T10], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, t6 G_T6, t7 G_T7, t8 G_T8, t9 G_T9, t10 G_T10, ) G_TUPLE10

SequenceT10 converts 10 [func() O.Option[T]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]

func SequenceT2[ G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], T1, T2 any]( t1 G_T1, t2 G_T2, ) G_TUPLE2

SequenceT2 converts 2 [func() O.Option[T]] into a [func() O.Option[T.Tuple2[T1, T2]]]

func SequenceT3[ G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], T1, T2, T3 any]( t1 G_T1, t2 G_T2, t3 G_T3, ) G_TUPLE3

SequenceT3 converts 3 [func() O.Option[T]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]]

func SequenceT4[ G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], T1, T2, T3, T4 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, ) G_TUPLE4

SequenceT4 converts 4 [func() O.Option[T]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]]

func SequenceT5[ G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], T1, T2, T3, T4, T5 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, ) G_TUPLE5

SequenceT5 converts 5 [func() O.Option[T]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]]

func SequenceT6[ G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], T1, T2, T3, T4, T5, T6 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, t6 G_T6, ) G_TUPLE6

SequenceT6 converts 6 [func() O.Option[T]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]]

func SequenceT7[ G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], T1, T2, T3, T4, T5, T6, T7 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, t6 G_T6, t7 G_T7, ) G_TUPLE7

SequenceT7 converts 7 [func() O.Option[T]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]

func SequenceT8[ G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], T1, T2, T3, T4, T5, T6, T7, T8 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, t6 G_T6, t7 G_T7, t8 G_T8, ) G_TUPLE8

SequenceT8 converts 8 [func() O.Option[T]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]

func SequenceT9[ G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], T1, T2, T3, T4, T5, T6, T7, T8, T9 any]( t1 G_T1, t2 G_T2, t3 G_T3, t4 G_T4, t5 G_T5, t6 G_T6, t7 G_T7, t8 G_T8, t9 G_T9, ) G_TUPLE9

SequenceT9 converts 9 [func() O.Option[T]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]

func SequenceTuple1[ G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], G_T1 ~func() O.Option[T1], T1 any](t T.Tuple1[G_T1]) G_TUPLE1

SequenceTuple1 converts a [T.Tuple1[func() O.Option[T]]] into a [func() O.Option[T.Tuple1[T1]]]

func SequenceTuple10[ G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], G_T10 ~func() O.Option[T10], T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](t T.Tuple10[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9, G_T10]) G_TUPLE10

SequenceTuple10 converts a [T.Tuple10[func() O.Option[T]]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]

func SequenceTuple2[ G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], T1, T2 any](t T.Tuple2[G_T1, G_T2]) G_TUPLE2

SequenceTuple2 converts a [T.Tuple2[func() O.Option[T]]] into a [func() O.Option[T.Tuple2[T1, T2]]]

func SequenceTuple3[ G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], T1, T2, T3 any](t T.Tuple3[G_T1, G_T2, G_T3]) G_TUPLE3

SequenceTuple3 converts a [T.Tuple3[func() O.Option[T]]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]]

func SequenceTuple4[ G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], T1, T2, T3, T4 any](t T.Tuple4[G_T1, G_T2, G_T3, G_T4]) G_TUPLE4

SequenceTuple4 converts a [T.Tuple4[func() O.Option[T]]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]]

func SequenceTuple5[ G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], T1, T2, T3, T4, T5 any](t T.Tuple5[G_T1, G_T2, G_T3, G_T4, G_T5]) G_TUPLE5

SequenceTuple5 converts a [T.Tuple5[func() O.Option[T]]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]]

func SequenceTuple6[ G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], T1, T2, T3, T4, T5, T6 any](t T.Tuple6[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6]) G_TUPLE6

SequenceTuple6 converts a [T.Tuple6[func() O.Option[T]]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]]

func SequenceTuple7[ G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], T1, T2, T3, T4, T5, T6, T7 any](t T.Tuple7[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7]) G_TUPLE7

SequenceTuple7 converts a [T.Tuple7[func() O.Option[T]]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]

func SequenceTuple8[ G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], T1, T2, T3, T4, T5, T6, T7, T8 any](t T.Tuple8[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8]) G_TUPLE8

SequenceTuple8 converts a [T.Tuple8[func() O.Option[T]]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]

func SequenceTuple9[ G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], T1, T2, T3, T4, T5, T6, T7, T8, T9 any](t T.Tuple9[G_T1, G_T2, G_T3, G_T4, G_T5, G_T6, G_T7, G_T8, G_T9]) G_TUPLE9

SequenceTuple9 converts a [T.Tuple9[func() O.Option[T]]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]

func Some[GA ~func() O.Option[A], A any](r A) GA

func TraverseArray[TB ~func() O.Option[B], TBS ~func() O.Option[GB], GA ~[]A, GB ~[]B, A, B any](f func(A) TB) func(GA) TBS

func TraverseArrayWithIndex[TB ~func() O.Option[B], TBS ~func() O.Option[GB], GA ~[]A, GB ~[]B, A, B any](f func(int, A) TB) func(GA) TBS

func TraverseTuple1[ G_TUPLE1 ~func() O.Option[T.Tuple1[T1]], F1 ~func(A1) G_T1, G_T1 ~func() O.Option[T1], A1, T1 any](f1 F1) func(T.Tuple1[A1]) G_TUPLE1

TraverseTuple1 converts a [T.Tuple1[func() O.Option[T]]] into a [func() O.Option[T.Tuple1[T1]]]

func TraverseTuple10[ G_TUPLE10 ~func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, F6 ~func(A6) G_T6, F7 ~func(A7) G_T7, F8 ~func(A8) G_T8, F9 ~func(A9) G_T9, F10 ~func(A10) G_T10, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], G_T10 ~func() O.Option[T10], A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9, f10 F10) func(T.Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) G_TUPLE10

TraverseTuple10 converts a [T.Tuple10[func() O.Option[T]]] into a [func() O.Option[T.Tuple10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]]

func TraverseTuple2[ G_TUPLE2 ~func() O.Option[T.Tuple2[T1, T2]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], A1, A2, T1, T2 any](f1 F1, f2 F2) func(T.Tuple2[A1, A2]) G_TUPLE2

TraverseTuple2 converts a [T.Tuple2[func() O.Option[T]]] into a [func() O.Option[T.Tuple2[T1, T2]]]

func TraverseTuple3[ G_TUPLE3 ~func() O.Option[T.Tuple3[T1, T2, T3]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], A1, A2, A3, T1, T2, T3 any](f1 F1, f2 F2, f3 F3) func(T.Tuple3[A1, A2, A3]) G_TUPLE3

TraverseTuple3 converts a [T.Tuple3[func() O.Option[T]]] into a [func() O.Option[T.Tuple3[T1, T2, T3]]]

func TraverseTuple4[ G_TUPLE4 ~func() O.Option[T.Tuple4[T1, T2, T3, T4]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], A1, A2, A3, A4, T1, T2, T3, T4 any](f1 F1, f2 F2, f3 F3, f4 F4) func(T.Tuple4[A1, A2, A3, A4]) G_TUPLE4

TraverseTuple4 converts a [T.Tuple4[func() O.Option[T]]] into a [func() O.Option[T.Tuple4[T1, T2, T3, T4]]]

func TraverseTuple5[ G_TUPLE5 ~func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], A1, A2, A3, A4, A5, T1, T2, T3, T4, T5 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5) func(T.Tuple5[A1, A2, A3, A4, A5]) G_TUPLE5

TraverseTuple5 converts a [T.Tuple5[func() O.Option[T]]] into a [func() O.Option[T.Tuple5[T1, T2, T3, T4, T5]]]

func TraverseTuple6[ G_TUPLE6 ~func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, F6 ~func(A6) G_T6, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], A1, A2, A3, A4, A5, A6, T1, T2, T3, T4, T5, T6 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6) func(T.Tuple6[A1, A2, A3, A4, A5, A6]) G_TUPLE6

TraverseTuple6 converts a [T.Tuple6[func() O.Option[T]]] into a [func() O.Option[T.Tuple6[T1, T2, T3, T4, T5, T6]]]

func TraverseTuple7[ G_TUPLE7 ~func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, F6 ~func(A6) G_T6, F7 ~func(A7) G_T7, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], A1, A2, A3, A4, A5, A6, A7, T1, T2, T3, T4, T5, T6, T7 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7) func(T.Tuple7[A1, A2, A3, A4, A5, A6, A7]) G_TUPLE7

TraverseTuple7 converts a [T.Tuple7[func() O.Option[T]]] into a [func() O.Option[T.Tuple7[T1, T2, T3, T4, T5, T6, T7]]]

func TraverseTuple8[ G_TUPLE8 ~func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, F6 ~func(A6) G_T6, F7 ~func(A7) G_T7, F8 ~func(A8) G_T8, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], A1, A2, A3, A4, A5, A6, A7, A8, T1, T2, T3, T4, T5, T6, T7, T8 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8) func(T.Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]) G_TUPLE8

TraverseTuple8 converts a [T.Tuple8[func() O.Option[T]]] into a [func() O.Option[T.Tuple8[T1, T2, T3, T4, T5, T6, T7, T8]]]

func TraverseTuple9[ G_TUPLE9 ~func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]], F1 ~func(A1) G_T1, F2 ~func(A2) G_T2, F3 ~func(A3) G_T3, F4 ~func(A4) G_T4, F5 ~func(A5) G_T5, F6 ~func(A6) G_T6, F7 ~func(A7) G_T7, F8 ~func(A8) G_T8, F9 ~func(A9) G_T9, G_T1 ~func() O.Option[T1], G_T2 ~func() O.Option[T2], G_T3 ~func() O.Option[T3], G_T4 ~func() O.Option[T4], G_T5 ~func() O.Option[T5], G_T6 ~func() O.Option[T6], G_T7 ~func() O.Option[T7], G_T8 ~func() O.Option[T8], G_T9 ~func() O.Option[T9], A1, A2, A3, A4, A5, A6, A7, A8, A9, T1, T2, T3, T4, T5, T6, T7, T8, T9 any](f1 F1, f2 F2, f3 F3, f4 F4, f5 F5, f6 F6, f7 F7, f8 F8, f9 F9) func(T.Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]) G_TUPLE9

TraverseTuple9 converts a [T.Tuple9[func() O.Option[T]]] into a [func() O.Option[T.Tuple9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]]

func WithLock[GA ~func() O.Option[A], A any](lock func() context.CancelFunc) func(fa GA) GA

WithLock executes the provided IO operation in the scope of a lock

func WithResource[ GA ~func() O.Option[A], GR ~func() O.Option[R], GANY ~func() O.Option[ANY], R, A, ANY any](onCreate GR, onRelease func(R) GANY) func(func(R) GA) GA

WithResource constructs a function that creates a resource, then operates on it and then releases the resource