mirror of
https://github.com/IBM/fp-go.git
synced 2025-08-10 22:31:32 +02:00
fix: add missing MapLeft
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
@@ -67,16 +67,17 @@ func MapTo[E, A, B any](b B) func(Either[E, A]) Either[E, B] {
|
|||||||
return F.Bind2nd(MonadMapTo[E, A, B], b)
|
return F.Bind2nd(MonadMapTo[E, A, B], b)
|
||||||
}
|
}
|
||||||
|
|
||||||
func MonadMapLeft[E, A, B any](fa Either[E, A], f func(E) B) Either[B, A] {
|
func MonadMapLeft[E1, A, E2 any](fa Either[E1, A], f func(E1) E2) Either[E2, A] {
|
||||||
return MonadFold(fa, F.Flow2(f, Left[A, B]), Right[B, A])
|
return MonadFold(fa, F.Flow2(f, Left[A, E2]), Right[E2, A])
|
||||||
}
|
}
|
||||||
|
|
||||||
func Map[E, A, B any](f func(a A) B) func(fa Either[E, A]) Either[E, B] {
|
func Map[E, A, B any](f func(a A) B) func(fa Either[E, A]) Either[E, B] {
|
||||||
return Chain(F.Flow2(f, Right[E, B]))
|
return Chain(F.Flow2(f, Right[E, B]))
|
||||||
}
|
}
|
||||||
|
|
||||||
func MapLeft[E, A, B any](f func(E) B) func(fa Either[E, A]) Either[B, A] {
|
// MapLeft applies a mapping function to the error channel
|
||||||
return F.Bind2nd(MonadMapLeft[E, A, B], f)
|
func MapLeft[A, E1, E2 any](f func(E1) E2) func(fa Either[E1, A]) Either[E2, A] {
|
||||||
|
return F.Bind2nd(MonadMapLeft[E1, A, E2], f)
|
||||||
}
|
}
|
||||||
|
|
||||||
func MonadChain[E, A, B any](fa Either[E, A], f func(a A) Either[E, B]) Either[E, B] {
|
func MonadChain[E, A, B any](fa Either[E, A], f func(a A) Either[E, B]) Either[E, B] {
|
||||||
|
@@ -175,7 +175,7 @@ func MonadMapLeft[E1, E2, A any](fa IOEither[E1, A], f func(E1) E2) IOEither[E2,
|
|||||||
return G.MonadMapLeft[IOEither[E1, A], IOEither[E2, A]](fa, f)
|
return G.MonadMapLeft[IOEither[E1, A], IOEither[E2, A]](fa, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
func MapLeft[E1, E2, A any](f func(E1) E2) func(IOEither[E1, A]) IOEither[E2, A] {
|
func MapLeft[A, E1, E2 any](f func(E1) E2) func(IOEither[E1, A]) IOEither[E2, A] {
|
||||||
return G.MapLeft[IOEither[E1, A], IOEither[E2, A]](f)
|
return G.MapLeft[IOEither[E1, A], IOEither[E2, A]](f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -164,3 +164,12 @@ func MonadFlap[GEFAB ~func(E) ET.Either[L, func(A) B], GEB ~func(E) ET.Either[L,
|
|||||||
func Flap[GEFAB ~func(E) ET.Either[L, func(A) B], GEB ~func(E) ET.Either[L, B], L, E, A, B any](a A) func(GEFAB) GEB {
|
func Flap[GEFAB ~func(E) ET.Either[L, func(A) B], GEB ~func(E) ET.Either[L, B], L, E, A, B any](a A) func(GEFAB) GEB {
|
||||||
return FC.Flap(MonadMap[GEFAB, GEB], a)
|
return FC.Flap(MonadMap[GEFAB, GEB], a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MonadMapLeft[GA1 ~func(C) ET.Either[E1, A], GA2 ~func(C) ET.Either[E2, A], C, E1, E2, A any](fa GA1, f func(E1) E2) GA2 {
|
||||||
|
return eithert.MonadMapLeft(R.MonadMap[GA1, GA2, C, ET.Either[E1, A], ET.Either[E2, A]], fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MapLeft applies a mapping function to the error channel
|
||||||
|
func MapLeft[GA1 ~func(C) ET.Either[E1, A], GA2 ~func(C) ET.Either[E2, A], C, E1, E2, A any](f func(E1) E2) func(GA1) GA2 {
|
||||||
|
return F.Bind2nd(MonadMapLeft[GA1, GA2, C, E1, E2, A], f)
|
||||||
|
}
|
||||||
|
@@ -151,3 +151,12 @@ func MonadFlap[L, E, A, B any](fab ReaderEither[L, E, func(A) B], a A) ReaderEit
|
|||||||
func Flap[L, E, B, A any](a A) func(ReaderEither[L, E, func(A) B]) ReaderEither[L, E, B] {
|
func Flap[L, E, B, A any](a A) func(ReaderEither[L, E, func(A) B]) ReaderEither[L, E, B] {
|
||||||
return G.Flap[ReaderEither[L, E, func(A) B], ReaderEither[L, E, B]](a)
|
return G.Flap[ReaderEither[L, E, func(A) B], ReaderEither[L, E, B]](a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MonadMapLeft[C, E1, E2, A any](fa ReaderEither[C, E1, A], f func(E1) E2) ReaderEither[C, E2, A] {
|
||||||
|
return G.MonadMapLeft[ReaderEither[C, E1, A], ReaderEither[C, E2, A]](fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MapLeft applies a mapping function to the error channel
|
||||||
|
func MapLeft[C, E1, E2, A any](f func(E1) E2) func(ReaderEither[C, E1, A]) ReaderEither[C, E2, A] {
|
||||||
|
return G.MapLeft[ReaderEither[C, E1, A], ReaderEither[C, E2, A]](f)
|
||||||
|
}
|
||||||
|
@@ -440,3 +440,12 @@ func MonadFlap[GREAB ~func(R) GEAB, GREB ~func(R) GEB, GEAB ~func() ET.Either[E,
|
|||||||
func Flap[GREAB ~func(R) GEAB, GREB ~func(R) GEB, GEAB ~func() ET.Either[E, func(A) B], GEB ~func() ET.Either[E, B], R, E, B, A any](a A) func(GREAB) GREB {
|
func Flap[GREAB ~func(R) GEAB, GREB ~func(R) GEB, GEAB ~func() ET.Either[E, func(A) B], GEB ~func() ET.Either[E, B], R, E, B, A any](a A) func(GREAB) GREB {
|
||||||
return FC.Flap(MonadMap[GREAB, GREB], a)
|
return FC.Flap(MonadMap[GREAB, GREB], a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MonadMapLeft[GREA1 ~func(R) GEA1, GREA2 ~func(R) GEA2, GEA1 ~func() ET.Either[E1, A], GEA2 ~func() ET.Either[E2, A], R, E1, E2, A any](fa GREA1, f func(E1) E2) GREA2 {
|
||||||
|
return eithert.MonadMapLeft(G.MonadMap[GREA1, GREA2], fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MapLeft applies a mapping function to the error channel
|
||||||
|
func MapLeft[GREA1 ~func(R) GEA1, GREA2 ~func(R) GEA2, GEA1 ~func() ET.Either[E1, A], GEA2 ~func() ET.Either[E2, A], R, E1, E2, A any](f func(E1) E2) func(GREA1) GREA2 {
|
||||||
|
return F.Bind2nd(MonadMapLeft[GREA1, GREA2], f)
|
||||||
|
}
|
||||||
|
@@ -280,3 +280,12 @@ func MonadFlap[R, E, B, A any](fab ReaderIOEither[R, E, func(A) B], a A) ReaderI
|
|||||||
func Flap[R, E, B, A any](a A) func(ReaderIOEither[R, E, func(A) B]) ReaderIOEither[R, E, B] {
|
func Flap[R, E, B, A any](a A) func(ReaderIOEither[R, E, func(A) B]) ReaderIOEither[R, E, B] {
|
||||||
return G.Flap[ReaderIOEither[R, E, func(A) B], ReaderIOEither[R, E, B]](a)
|
return G.Flap[ReaderIOEither[R, E, func(A) B], ReaderIOEither[R, E, B]](a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MonadMapLeft[R, E1, E2, A any](fa ReaderIOEither[R, E1, A], f func(E1) E2) ReaderIOEither[R, E2, A] {
|
||||||
|
return G.MonadMapLeft[ReaderIOEither[R, E1, A], ReaderIOEither[R, E2, A]](fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MapLeft applies a mapping function to the error channel
|
||||||
|
func MapLeft[R, A, E1, E2 any](f func(E1) E2) func(ReaderIOEither[R, E1, A]) ReaderIOEither[R, E2, A] {
|
||||||
|
return G.MapLeft[ReaderIOEither[R, E1, A], ReaderIOEither[R, E2, A]](f)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user