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) +}