Documentation
¶
Overview ¶
Package readerioeither contains a version of ReaderIOEither that takes a golang context.Context as its context
Package readerioeither implements a specialization of the Reader monad assuming a golang context as the context of the monad and a standard golang error
Index ¶
- func Ap[B, A any](fa ReaderIOEither[A]) func(ReaderIOEither[func(A) B]) ReaderIOEither[B]
- func Chain[A, B any](f func(A) ReaderIOEither[B]) func(ReaderIOEither[A]) ReaderIOEither[B]
- func ChainEitherK[A, B any](f func(A) ET.Either[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
- func ChainFirst[A, B any](f func(A) ReaderIOEither[B]) func(ReaderIOEither[A]) ReaderIOEither[A]
- func ChainFirstEitherK[A, B any](f func(A) ET.Either[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[A]
- func ChainFirstIOK[A, B any](f func(A) IO.IO[B]) func(ma ReaderIOEither[A]) ReaderIOEither[A]
- func ChainIOEitherK[A, B any](f func(A) IOE.IOEither[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
- func ChainIOK[A, B any](f func(A) IO.IO[B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
- func ChainOptionK[A, B any](onNone func() error) func(func(A) O.Option[B]) func(ReaderIOEither[A]) ReaderIOEither[B]
- func Delay[A any](delay time.Duration) func(ma ReaderIOEither[A]) ReaderIOEither[A]
- func Eitherize0[F ~func(context.Context) (R, error), R any](f F) func() ReaderIOEither[R]
- func Eitherize1[F ~func(context.Context, T0) (R, error), T0, R any](f F) func(T0) ReaderIOEither[R]
- func Eitherize10[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), ...](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) ReaderIOEither[R]
- func Eitherize2[F ~func(context.Context, T0, T1) (R, error), T0, T1, R any](f F) func(T0, T1) ReaderIOEither[R]
- func Eitherize3[F ~func(context.Context, T0, T1, T2) (R, error), T0, T1, T2, R any](f F) func(T0, T1, T2) ReaderIOEither[R]
- func Eitherize4[F ~func(context.Context, T0, T1, T2, T3) (R, error), T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) ReaderIOEither[R]
- func Eitherize5[F ~func(context.Context, T0, T1, T2, T3, T4) (R, error), ...](f F) func(T0, T1, T2, T3, T4) ReaderIOEither[R]
- func Eitherize6[F ~func(context.Context, T0, T1, T2, T3, T4, T5) (R, error), ...](f F) func(T0, T1, T2, T3, T4, T5) ReaderIOEither[R]
- func Eitherize7[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6) (R, error), ...](f F) func(T0, T1, T2, T3, T4, T5, T6) ReaderIOEither[R]
- func Eitherize8[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), ...](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) ReaderIOEither[R]
- func Eitherize9[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), ...](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) ReaderIOEither[R]
- func Eq[A any](eq EQ.Eq[ET.Either[error, A]]) func(context.Context) EQ.Eq[ReaderIOEither[A]]
- func Fold[A, B any](onLeft func(error) RIO.ReaderIO[B], onRight func(A) RIO.ReaderIO[B]) func(ReaderIOEither[A]) RIO.ReaderIO[B]
- func FromPredicate[A any](pred func(A) bool, onFalse func(A) error) func(A) ReaderIOEither[A]
- func GetOrElse[A any](onLeft func(error) RIO.ReaderIO[A]) func(ReaderIOEither[A]) RIO.ReaderIO[A]
- func Map[A, B any](f func(A) B) func(ReaderIOEither[A]) ReaderIOEither[B]
- func OrElse[A any](onLeft func(error) ReaderIOEither[A]) func(ReaderIOEither[A]) ReaderIOEither[A]
- func OrLeft[A any](onLeft func(error) RIO.ReaderIO[error]) func(ReaderIOEither[A]) ReaderIOEither[A]
- func TraverseArray[A, B any](f func(A) ReaderIOEither[B]) func([]A) ReaderIOEither[[]B]
- func TraverseRecord[K comparable, A, B any](f func(A) ReaderIOEither[B]) func(map[K]A) ReaderIOEither[map[K]B]
- func WithResource[R, A, ANY any](onCreate ReaderIOEither[R], onRelease func(R) ReaderIOEither[ANY]) func(func(R) ReaderIOEither[A]) ReaderIOEither[A]
- type ReaderIOEither
- func Ask() ReaderIOEither[context.Context]
- func Asks[A any](r R.Reader[A]) ReaderIOEither[A]
- func Defer[A any](gen func() ReaderIOEither[A]) ReaderIOEither[A]
- func FromEither[A any](e ET.Either[error, A]) ReaderIOEither[A]
- func FromIO[A any](t IO.IO[A]) ReaderIOEither[A]
- func FromIOEither[A any](t IOE.IOEither[error, A]) ReaderIOEither[A]
- func FromReader[A any](r R.Reader[A]) ReaderIOEither[A]
- func Left[A any](l error) ReaderIOEither[A]
- func LeftReader[A any](l R.Reader[error]) ReaderIOEither[A]
- func MonadAp[B, A any](fab ReaderIOEither[func(A) B], fa ReaderIOEither[A]) ReaderIOEither[B]
- func MonadChain[A, B any](ma ReaderIOEither[A], f func(A) ReaderIOEither[B]) ReaderIOEither[B]
- func MonadChainEitherK[A, B any](ma ReaderIOEither[A], f func(A) ET.Either[error, B]) ReaderIOEither[B]
- func MonadChainFirst[A, B any](ma ReaderIOEither[A], f func(A) ReaderIOEither[B]) ReaderIOEither[A]
- func MonadChainFirstEitherK[A, B any](ma ReaderIOEither[A], f func(A) ET.Either[error, B]) ReaderIOEither[A]
- func MonadChainFirstIOK[A, B any](ma ReaderIOEither[A], f func(A) IO.IO[B]) ReaderIOEither[A]
- func MonadChainIOK[A, B any](ma ReaderIOEither[A], f func(A) IO.IO[B]) ReaderIOEither[B]
- func MonadMap[A, B any](fa ReaderIOEither[A], f func(A) B) ReaderIOEither[B]
- func Never[A any]() ReaderIOEither[A]
- func Of[A any](a A) ReaderIOEither[A]
- func Right[A any](r A) ReaderIOEither[A]
- func RightReader[A any](r R.Reader[A]) ReaderIOEither[A]
- func SequenceArray[A any](ma []ReaderIOEither[A]) ReaderIOEither[[]A]
- func SequenceRecord[K comparable, A any](ma map[K]ReaderIOEither[A]) ReaderIOEither[map[K]A]
- func SequenceT1[A any](a ReaderIOEither[A]) ReaderIOEither[T.Tuple1[A]]
- func SequenceT2[A, B any](a ReaderIOEither[A], b ReaderIOEither[B]) ReaderIOEither[T.Tuple2[A, B]]
- func SequenceT3[A, B, C any](a ReaderIOEither[A], b ReaderIOEither[B], c ReaderIOEither[C]) ReaderIOEither[T.Tuple3[A, B, C]]
- func SequenceT4[A, B, C, D any](a ReaderIOEither[A], b ReaderIOEither[B], c ReaderIOEither[C], ...) ReaderIOEither[T.Tuple4[A, B, C, D]]
- func Timer(delay time.Duration) ReaderIOEither[time.Time]
- func TryCatch[A any](f func(context.Context) func() (A, error)) ReaderIOEither[A]
- func WithContext[A any](ma ReaderIOEither[A]) ReaderIOEither[A]
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Ap ¶
func Ap[B, A any](fa ReaderIOEither[A]) func(ReaderIOEither[func(A) B]) ReaderIOEither[B]
func Chain ¶
func Chain[A, B any](f func(A) ReaderIOEither[B]) func(ReaderIOEither[A]) ReaderIOEither[B]
func ChainEitherK ¶
func ChainEitherK[A, B any](f func(A) ET.Either[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
func ChainFirst ¶
func ChainFirst[A, B any](f func(A) ReaderIOEither[B]) func(ReaderIOEither[A]) ReaderIOEither[A]
func ChainFirstEitherK ¶
func ChainFirstEitherK[A, B any](f func(A) ET.Either[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[A]
func ChainFirstIOK ¶
func ChainFirstIOK[A, B any](f func(A) IO.IO[B]) func(ma ReaderIOEither[A]) ReaderIOEither[A]
func ChainIOEitherK ¶
func ChainIOEitherK[A, B any](f func(A) IOE.IOEither[error, B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
func ChainIOK ¶
func ChainIOK[A, B any](f func(A) IO.IO[B]) func(ma ReaderIOEither[A]) ReaderIOEither[B]
func ChainOptionK ¶
func ChainOptionK[A, B any](onNone func() error) func(func(A) O.Option[B]) func(ReaderIOEither[A]) ReaderIOEither[B]
func Delay ¶
func Delay[A any](delay time.Duration) func(ma ReaderIOEither[A]) ReaderIOEither[A]
Delay creates an operation that passes in the value after some delay
func Eitherize0 ¶
func Eitherize0[F ~func(context.Context) (R, error), R any](f F) func() ReaderIOEither[R]
Eitherize0 converts a function with 0 parameters returning a tuple into a function with 0 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize0]
func Eitherize1 ¶
func Eitherize1[F ~func(context.Context, T0) (R, error), T0, R any](f F) func(T0) ReaderIOEither[R]
Eitherize1 converts a function with 1 parameters returning a tuple into a function with 1 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize1]
func Eitherize10 ¶
func Eitherize10[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) ReaderIOEither[R]
Eitherize10 converts a function with 10 parameters returning a tuple into a function with 10 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize10]
func Eitherize2 ¶
func Eitherize2[F ~func(context.Context, T0, T1) (R, error), T0, T1, R any](f F) func(T0, T1) ReaderIOEither[R]
Eitherize2 converts a function with 2 parameters returning a tuple into a function with 2 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize2]
func Eitherize3 ¶
func Eitherize3[F ~func(context.Context, T0, T1, T2) (R, error), T0, T1, T2, R any](f F) func(T0, T1, T2) ReaderIOEither[R]
Eitherize3 converts a function with 3 parameters returning a tuple into a function with 3 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize3]
func Eitherize4 ¶
func Eitherize4[F ~func(context.Context, T0, T1, T2, T3) (R, error), T0, T1, T2, T3, R any](f F) func(T0, T1, T2, T3) ReaderIOEither[R]
Eitherize4 converts a function with 4 parameters returning a tuple into a function with 4 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize4]
func Eitherize5 ¶
func Eitherize5[F ~func(context.Context, T0, T1, T2, T3, T4) (R, error), T0, T1, T2, T3, T4, R any](f F) func(T0, T1, T2, T3, T4) ReaderIOEither[R]
Eitherize5 converts a function with 5 parameters returning a tuple into a function with 5 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize5]
func Eitherize6 ¶
func Eitherize6[F ~func(context.Context, T0, T1, T2, T3, T4, T5) (R, error), T0, T1, T2, T3, T4, T5, R any](f F) func(T0, T1, T2, T3, T4, T5) ReaderIOEither[R]
Eitherize6 converts a function with 6 parameters returning a tuple into a function with 6 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize6]
func Eitherize7 ¶
func Eitherize7[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6) (R, error), T0, T1, T2, T3, T4, T5, T6, R any](f F) func(T0, T1, T2, T3, T4, T5, T6) ReaderIOEither[R]
Eitherize7 converts a function with 7 parameters returning a tuple into a function with 7 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize7]
func Eitherize8 ¶
func Eitherize8[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7) ReaderIOEither[R]
Eitherize8 converts a function with 8 parameters returning a tuple into a function with 8 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize8]
func Eitherize9 ¶
func Eitherize9[F ~func(context.Context, T0, T1, T2, T3, T4, T5, T6, T7, T8) (R, error), T0, T1, T2, T3, T4, T5, T6, T7, T8, R any](f F) func(T0, T1, T2, T3, T4, T5, T6, T7, T8) ReaderIOEither[R]
Eitherize9 converts a function with 9 parameters returning a tuple into a function with 9 parameters returning a [ReaderIOEither[R]] The inverse function is [Uneitherize9]
func FromPredicate ¶
func FromPredicate[A any](pred func(A) bool, onFalse func(A) error) func(A) ReaderIOEither[A]
func Map ¶
func Map[A, B any](f func(A) B) func(ReaderIOEither[A]) ReaderIOEither[B]
func OrElse ¶
func OrElse[A any](onLeft func(error) ReaderIOEither[A]) func(ReaderIOEither[A]) ReaderIOEither[A]
func OrLeft ¶
func OrLeft[A any](onLeft func(error) RIO.ReaderIO[error]) func(ReaderIOEither[A]) ReaderIOEither[A]
func TraverseArray ¶
func TraverseArray[A, B any](f func(A) ReaderIOEither[B]) func([]A) ReaderIOEither[[]B]
TraverseArray transforms an array
func TraverseRecord ¶
func TraverseRecord[K comparable, A, B any](f func(A) ReaderIOEither[B]) func(map[K]A) ReaderIOEither[map[K]B]
TraverseRecord transforms a record
func WithResource ¶
func WithResource[R, A, ANY any](onCreate ReaderIOEither[R], onRelease func(R) ReaderIOEither[ANY]) func(func(R) ReaderIOEither[A]) ReaderIOEither[A]
WithResource constructs a function that creates a resource, then operates on it and then releases the resource
Types ¶
type ReaderIOEither ¶
ReaderIOEither is a specialization of the Reader monad for the typical golang scenario
func Ask ¶
func Ask() ReaderIOEither[context.Context]
func Defer ¶
func Defer[A any](gen func() ReaderIOEither[A]) ReaderIOEither[A]
Defer creates an IO by creating a brand new IO via a generator function, each time
func FromEither ¶
func FromEither[A any](e ET.Either[error, A]) ReaderIOEither[A]
func FromIOEither ¶
func FromIOEither[A any](t IOE.IOEither[error, A]) ReaderIOEither[A]
func FromReader ¶
func FromReader[A any](r R.Reader[A]) ReaderIOEither[A]
func Left ¶
func Left[A any](l error) ReaderIOEither[A]
func LeftReader ¶
func LeftReader[A any](l R.Reader[error]) ReaderIOEither[A]
func MonadAp ¶
func MonadAp[B, A any](fab ReaderIOEither[func(A) B], fa ReaderIOEither[A]) ReaderIOEither[B]
MonadAp implements the `Ap` function for a reader with context. It creates a sub-context that will be canceled if any of the input operations errors out or
func MonadChain ¶
func MonadChain[A, B any](ma ReaderIOEither[A], f func(A) ReaderIOEither[B]) ReaderIOEither[B]
func MonadChainEitherK ¶
func MonadChainEitherK[A, B any](ma ReaderIOEither[A], f func(A) ET.Either[error, B]) ReaderIOEither[B]
func MonadChainFirst ¶
func MonadChainFirst[A, B any](ma ReaderIOEither[A], f func(A) ReaderIOEither[B]) ReaderIOEither[A]
func MonadChainFirstEitherK ¶
func MonadChainFirstEitherK[A, B any](ma ReaderIOEither[A], f func(A) ET.Either[error, B]) ReaderIOEither[A]
func MonadChainFirstIOK ¶
func MonadChainFirstIOK[A, B any](ma ReaderIOEither[A], f func(A) IO.IO[B]) ReaderIOEither[A]
func MonadChainIOK ¶
func MonadChainIOK[A, B any](ma ReaderIOEither[A], f func(A) IO.IO[B]) ReaderIOEither[B]
func MonadMap ¶
func MonadMap[A, B any](fa ReaderIOEither[A], f func(A) B) ReaderIOEither[B]
func Never ¶
func Never[A any]() ReaderIOEither[A]
Never returns a 'ReaderIOEither' that never returns, except if its context gets canceled
func Of ¶
func Of[A any](a A) ReaderIOEither[A]
func Right ¶
func Right[A any](r A) ReaderIOEither[A]
func RightReader ¶
func RightReader[A any](r R.Reader[A]) ReaderIOEither[A]
func SequenceArray ¶
func SequenceArray[A any](ma []ReaderIOEither[A]) ReaderIOEither[[]A]
SequenceArray converts a homogeneous sequence of either into an either of sequence
func SequenceRecord ¶
func SequenceRecord[K comparable, A any](ma map[K]ReaderIOEither[A]) ReaderIOEither[map[K]A]
SequenceRecord converts a homogeneous sequence of either into an either of sequence
func SequenceT1 ¶
func SequenceT1[A any](a ReaderIOEither[A]) ReaderIOEither[T.Tuple1[A]]
func SequenceT2 ¶
func SequenceT2[A, B any](a ReaderIOEither[A], b ReaderIOEither[B]) ReaderIOEither[T.Tuple2[A, B]]
func SequenceT3 ¶
func SequenceT3[A, B, C any](a ReaderIOEither[A], b ReaderIOEither[B], c ReaderIOEither[C]) ReaderIOEither[T.Tuple3[A, B, C]]
func SequenceT4 ¶
func SequenceT4[A, B, C, D any](a ReaderIOEither[A], b ReaderIOEither[B], c ReaderIOEither[C], d ReaderIOEither[D]) ReaderIOEither[T.Tuple4[A, B, C, D]]
func Timer ¶
func Timer(delay time.Duration) ReaderIOEither[time.Time]
Timer will return the current time after an initial delay
func TryCatch ¶
func TryCatch[A any](f func(context.Context) func() (A, error)) ReaderIOEither[A]
TryCatch wraps a reader returning a tuple as an error into ReaderIOEither
func WithContext ¶
func WithContext[A any](ma ReaderIOEither[A]) ReaderIOEither[A]
WithContext wraps an existing ReaderIOEither and performs a context check for cancellation before delegating