From e39e5e092021ec8266d869659c91a0d71c2f7694 Mon Sep 17 00:00:00 2001 From: "Dr. Carsten Leue" Date: Fri, 24 May 2024 12:55:20 +0200 Subject: [PATCH] fix: add missing Fold to ReaderIOEither Signed-off-by: Dr. Carsten Leue --- context/readerioeither/reader.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/context/readerioeither/reader.go b/context/readerioeither/reader.go index 2f39bde..f92216d 100644 --- a/context/readerioeither/reader.go +++ b/context/readerioeither/reader.go @@ -25,6 +25,7 @@ import ( IOE "github.com/IBM/fp-go/ioeither" L "github.com/IBM/fp-go/lazy" O "github.com/IBM/fp-go/option" + RIO "github.com/IBM/fp-go/readerio" ) func FromEither[A any](e ET.Either[error, A]) ReaderIOEither[A] { @@ -192,8 +193,7 @@ func Memoize[A any](rdr ReaderIOEither[A]) ReaderIOEither[A] { } // Flatten converts a nested [ReaderIOEither] into a [ReaderIOEither] -func Flatten[ - A any](rdr ReaderIOEither[ReaderIOEither[A]]) ReaderIOEither[A] { +func Flatten[A any](rdr ReaderIOEither[ReaderIOEither[A]]) ReaderIOEither[A] { return G.Flatten[ReaderIOEither[ReaderIOEither[A]]](rdr) } @@ -204,3 +204,15 @@ func MonadFlap[B, A any](fab ReaderIOEither[func(A) B], a A) ReaderIOEither[B] { func Flap[B, A any](a A) func(ReaderIOEither[func(A) B]) ReaderIOEither[B] { return G.Flap[ReaderIOEither[func(A) B], ReaderIOEither[B]](a) } + +func Fold[A, B any](onLeft func(error) ReaderIOEither[B], onRight func(A) ReaderIOEither[B]) func(ReaderIOEither[A]) ReaderIOEither[B] { + return G.Fold[ReaderIOEither[B], ReaderIOEither[A]](onLeft, onRight) +} + +func GetOrElse[A any](onLeft func(error) RIO.ReaderIO[context.Context, A]) func(ReaderIOEither[A]) RIO.ReaderIO[context.Context, A] { + return G.GetOrElse[RIO.ReaderIO[context.Context, A], ReaderIOEither[A]](onLeft) +} + +func OrLeft[A any](onLeft func(error) RIO.ReaderIO[context.Context, error]) func(ReaderIOEither[A]) ReaderIOEither[A] { + return G.OrLeft[ReaderIOEither[A]](onLeft) +}