mirror of
https://github.com/IBM/fp-go.git
synced 2025-08-10 22:31:32 +02:00
fix: add missing Flatten to Reader
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
@@ -65,3 +65,8 @@ func Defer[A any](gen L.Lazy[ReaderIO[A]]) ReaderIO[A] {
|
|||||||
func Memoize[A any](rdr ReaderIO[A]) ReaderIO[A] {
|
func Memoize[A any](rdr ReaderIO[A]) ReaderIO[A] {
|
||||||
return R.Memoize[ReaderIO[A]](rdr)
|
return R.Memoize[ReaderIO[A]](rdr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Flatten converts a nested [ReaderIO] into a [ReaderIO]
|
||||||
|
func Flatten[A any](mma ReaderIO[ReaderIO[A]]) ReaderIO[A] {
|
||||||
|
return R.Flatten[ReaderIO[A]](mma)
|
||||||
|
}
|
||||||
|
@@ -583,3 +583,12 @@ func Memoize[
|
|||||||
A any](rdr GRA) GRA {
|
A any](rdr GRA) GRA {
|
||||||
return RIE.Memoize[GRA](rdr)
|
return RIE.Memoize[GRA](rdr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Flatten[
|
||||||
|
GGRA ~func(context.Context) GGIOA,
|
||||||
|
GGIOA ~func() E.Either[error, GRA],
|
||||||
|
GRA ~func(context.Context) GIOA,
|
||||||
|
GIOA ~func() E.Either[error, A],
|
||||||
|
A any](rdr GGRA) GRA {
|
||||||
|
return RIE.Flatten[GRA](rdr)
|
||||||
|
}
|
||||||
|
@@ -220,3 +220,9 @@ func Alt[A any](second L.Lazy[ReaderIOEither[A]]) func(ReaderIOEither[A]) Reader
|
|||||||
func Memoize[A any](rdr ReaderIOEither[A]) ReaderIOEither[A] {
|
func Memoize[A any](rdr ReaderIOEither[A]) ReaderIOEither[A] {
|
||||||
return G.Memoize[ReaderIOEither[A]](rdr)
|
return G.Memoize[ReaderIOEither[A]](rdr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Flatten converts a nested [ReaderIOEither] into a [ReaderIOEither]
|
||||||
|
func Flatten[
|
||||||
|
A any](rdr ReaderIOEither[ReaderIOEither[A]]) ReaderIOEither[A] {
|
||||||
|
return G.Flatten[ReaderIOEither[ReaderIOEither[A]]](rdr)
|
||||||
|
}
|
||||||
|
@@ -124,3 +124,7 @@ func Memoize[GEA ~func(E) GA, GA ~func() A, E, A any](rdr GEA) GEA {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Flatten[GEA ~func(R) GIOA, GGEA ~func(R) GIOEA, GIOA ~func() A, GIOEA ~func() GEA, R, A any](mma GGEA) GEA {
|
||||||
|
return MonadChain(mma, F.Identity[GEA])
|
||||||
|
}
|
||||||
|
@@ -82,3 +82,7 @@ func Defer[E, A any](gen func() ReaderIO[E, A]) ReaderIO[E, A] {
|
|||||||
func Memoize[E, A any](rdr ReaderIO[E, A]) ReaderIO[E, A] {
|
func Memoize[E, A any](rdr ReaderIO[E, A]) ReaderIO[E, A] {
|
||||||
return G.Memoize[ReaderIO[E, A]](rdr)
|
return G.Memoize[ReaderIO[E, A]](rdr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Flatten[E, A any](mma ReaderIO[E, ReaderIO[E, A]]) ReaderIO[E, A] {
|
||||||
|
return G.Flatten[ReaderIO[E, A], ReaderIO[E, ReaderIO[E, A]]](mma)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user