Context

context/readereither

Package readereither implements a specialization of the Reader monad assuming a golang context as the context of the monad and a standard golang error

import "github.com/IBM/fp-go/context/readereither"

Package readereither implements a specialization of the Reader monad assuming a golang context as the context of the monad and a standard golang error

Functions

func Ap[A, B any](fa ReaderEither[A]) func(ReaderEither[func(A) B]) ReaderEither[B]

func ApS[S1, S2, T any]( setter func(T) func(S1) S2, fa ReaderEither[T], ) func(ReaderEither[S1]) ReaderEither[S2]

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

func Ask() ReaderEither[context.Context]

func Bind[S1, S2, T any]( setter func(T) func(S1) S2, f func(S1) ReaderEither[T], ) func(ReaderEither[S1]) ReaderEither[S2]

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

func BindTo[S1, T any]( setter func(T) S1, ) func(ReaderEither[T]) ReaderEither[S1]

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

func Chain[A, B any](f func(A) ReaderEither[B]) func(ReaderEither[A]) ReaderEither[B]

func ChainEitherK[A, B any](f func(A) ET.Either[error, B]) func(ma ReaderEither[A]) ReaderEither[B]

func ChainOptionK[A, B any](onNone func() error) func(func(A) O.Option[B]) func(ReaderEither[A]) ReaderEither[B]

func Curry0[A any](f func(context.Context) (A, error)) ReaderEither[A]

func Curry1[T1, A any](f func(context.Context, T1) (A, error)) func(T1) ReaderEither[A]

func Curry2[T1, T2, A any](f func(context.Context, T1, T2) (A, error)) func(T1) func(T2) ReaderEither[A]

func Curry3[T1, T2, T3, A any](f func(context.Context, T1, T2, T3) (A, error)) func(T1) func(T2) func(T3) ReaderEither[A]

func Do[S any]( empty S, ) ReaderEither[S]

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

func Flap[B, A any](a A) func(ReaderEither[func(A) B]) ReaderEither[B]

func From0[A any](f func(context.Context) (A, error)) func() ReaderEither[A]

func From1[T1, A any](f func(context.Context, T1) (A, error)) func(T1) ReaderEither[A]

func From2[T1, T2, A any](f func(context.Context, T1, T2) (A, error)) func(T1, T2) ReaderEither[A]

func From3[T1, T2, T3, A any](f func(context.Context, T1, T2, T3) (A, error)) func(T1, T2, T3) ReaderEither[A]

func FromEither[A any](e ET.Either[error, A]) ReaderEither[A]

func FromPredicate[A any](pred func(A) bool, onFalse func(A) error) func(A) ReaderEither[A]

func Left[A any](l error) ReaderEither[A]

func Let[S1, S2, T any]( setter func(T) func(S1) S2, f func(S1) T, ) func(ReaderEither[S1]) ReaderEither[S2]

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

func LetTo[S1, S2, T any]( setter func(T) func(S1) S2, b T, ) func(ReaderEither[S1]) ReaderEither[S2]

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

func MakeReaderEither[A any](f func(context.Context) ET.Either[error, A]) ReaderEither[A]

func Map[A, B any](f func(A) B) func(ReaderEither[A]) ReaderEither[B]

func MonadAp[A, B any](fab ReaderEither[func(A) B], fa ReaderEither[A]) ReaderEither[B]

func MonadChain[A, B any](ma ReaderEither[A], f func(A) ReaderEither[B]) ReaderEither[B]

func MonadChainEitherK[A, B any](ma ReaderEither[A], f func(A) ET.Either[error, B]) ReaderEither[B]

func MonadFlap[B, A any](fab ReaderEither[func(A) B], a A) ReaderEither[B]

func MonadMap[A, B any](fa ReaderEither[A], f func(A) B) ReaderEither[B]

func Of[A any](a A) ReaderEither[A]

func OrElse[A any](onLeft func(error) ReaderEither[A]) func(ReaderEither[A]) ReaderEither[A]

func Right[A any](r A) ReaderEither[A]

func SequenceArray[A any](ma []ReaderEither[A]) ReaderEither[[]A]

SequenceArray converts a homogeneous sequence of either into an either of sequence

func SequenceT1[A any](a ReaderEither[A]) ReaderEither[T.Tuple1[A]]

func SequenceT2[A, B any](a ReaderEither[A], b ReaderEither[B]) ReaderEither[T.Tuple2[A, B]]

func SequenceT3[A, B, C any](a ReaderEither[A], b ReaderEither[B], c ReaderEither[C]) ReaderEither[T.Tuple3[A, B, C]]

func SequenceT4[A, B, C, D any](a ReaderEither[A], b ReaderEither[B], c ReaderEither[C], d ReaderEither[D]) ReaderEither[T.Tuple4[A, B, C, D]]

func TraverseArray[A, B any](f func(A) ReaderEither[B]) func([]A) ReaderEither[[]B]

TraverseArray transforms an array

func TraverseArrayWithIndex[A, B any](f func(int, A) ReaderEither[B]) func([]A) ReaderEither[[]B]

TraverseArrayWithIndex transforms an array

func Uncurry1[T1, A any](f func(T1) ReaderEither[A]) func(context.Context, T1) (A, error)

func Uncurry2[T1, T2, A any](f func(T1) func(T2) ReaderEither[A]) func(context.Context, T1, T2) (A, error)

func Uncurry3[T1, T2, T3, A any](f func(T1) func(T2) func(T3) ReaderEither[A]) func(context.Context, T1, T2, T3) (A, error)

func WithContext[A any](ma ReaderEither[A]) ReaderEither[A]

withContext wraps an existing ReaderEither and performs a context check for cancellation before deletating

Types

type ReaderEither

ReaderEither is a specialization of the Reader monad for the typical golang scenario

type ReaderEither[A any] RE.ReaderEither[context.Context, error, A]