From caf057474266221dd96b3b6b2e7cc6af09d7011d Mon Sep 17 00:00:00 2001 From: "Dr. Carsten Leue" Date: Tue, 10 Oct 2023 15:04:59 +0200 Subject: [PATCH] fix: add missing RightReaderIO and FromReaderIO to context Signed-off-by: Dr. Carsten Leue --- context/readerioeither/generic/reader.go | 44 ++++++++++++++++++++++++ context/readerioeither/reader.go | 16 +++++++++ 2 files changed, 60 insertions(+) diff --git a/context/readerioeither/generic/reader.go b/context/readerioeither/generic/reader.go index 91f2467..41478dc 100644 --- a/context/readerioeither/generic/reader.go +++ b/context/readerioeither/generic/reader.go @@ -620,3 +620,47 @@ func Flatten[ A any](rdr GGRA) GRA { return RIE.Flatten[GRA](rdr) } + +func MonadFromReaderIO[ + GRIOEA ~func(context.Context) GIOEA, + GIOEA ~func() E.Either[error, A], + + GRIOA ~func(context.Context) GIOA, + GIOA ~func() A, + + A any](a A, f func(A) GRIOA) GRIOEA { + return RIE.MonadFromReaderIO[GRIOEA](a, f) +} + +func FromReaderIO[ + GRIOEA ~func(context.Context) GIOEA, + GIOEA ~func() E.Either[error, A], + + GRIOA ~func(context.Context) GIOA, + GIOA ~func() A, + + A any](f func(A) GRIOA) func(A) GRIOEA { + return RIE.FromReaderIO[GRIOEA](f) +} + +func RightReaderIO[ + GRIOEA ~func(context.Context) GIOEA, + GIOEA ~func() E.Either[error, A], + + GRIOA ~func(context.Context) GIOA, + GIOA ~func() A, + + A any](ma GRIOA) GRIOEA { + return RIE.RightReaderIO[GRIOEA](ma) +} + +func LeftReaderIO[ + GRIOEA ~func(context.Context) GIOEA, + GIOEA ~func() E.Either[error, A], + + GRIOE ~func(context.Context) GIOE, + GIOE ~func() error, + + A any](ma GRIOE) GRIOEA { + return RIE.LeftReaderIO[GRIOEA](ma) +} diff --git a/context/readerioeither/reader.go b/context/readerioeither/reader.go index 3cd52dd..0a31465 100644 --- a/context/readerioeither/reader.go +++ b/context/readerioeither/reader.go @@ -234,3 +234,19 @@ func Flatten[ A any](rdr ReaderIOEither[ReaderIOEither[A]]) ReaderIOEither[A] { return G.Flatten[ReaderIOEither[ReaderIOEither[A]]](rdr) } + +func MonadFromReaderIO[A any](a A, f func(A) RIO.ReaderIO[A]) ReaderIOEither[A] { + return G.MonadFromReaderIO[ReaderIOEither[A]](a, f) +} + +func FromReaderIO[A any](f func(A) RIO.ReaderIO[A]) func(A) ReaderIOEither[A] { + return G.FromReaderIO[ReaderIOEither[A]](f) +} + +func RightReaderIO[A any](ma RIO.ReaderIO[A]) ReaderIOEither[A] { + return G.RightReaderIO[ReaderIOEither[A]](ma) +} + +func LeftReaderIO[A any](ma RIO.ReaderIO[error]) ReaderIOEither[A] { + return G.LeftReaderIO[ReaderIOEither[A]](ma) +}