1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-08-10 22:31:32 +02:00

fix: add Flap to more monads

Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
Dr. Carsten Leue
2023-10-12 09:48:42 +02:00
parent b434f1fbf4
commit f129297045
11 changed files with 92 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ package generic
import (
F "github.com/IBM/fp-go/function"
I "github.com/IBM/fp-go/identity/generic"
FC "github.com/IBM/fp-go/internal/functor"
T "github.com/IBM/fp-go/tuple"
)
@@ -120,3 +121,11 @@ func Local[GA1 ~func(R1) A, GA2 ~func(R2) A, R2, R1, A any](f func(R2) R1) func(
func Read[GA ~func(E) A, E, A any](e E) func(GA) A {
return I.Ap[GA](e)
}
func MonadFlap[GAB ~func(R) func(A) B, GB ~func(R) B, R, A, B any](fab GAB, a A) GB {
return FC.MonadFlap(MonadMap[GAB, GB], fab, a)
}
func Flap[GAB ~func(R) func(A) B, GB ~func(R) B, R, A, B any](a A) func(GAB) GB {
return FC.Flap(MonadMap[GAB, GB], a)
}

View File

@@ -105,3 +105,11 @@ func Local[R2, R1, A any](f func(R2) R1) func(Reader[R1, A]) Reader[R2, A] {
func Read[E, A any](e E) func(Reader[E, A]) A {
return G.Read[Reader[E, A]](e)
}
func MonadFlap[R, A, B any](fab Reader[R, func(A) B], a A) Reader[R, B] {
return G.MonadFlap[Reader[R, func(A) B], Reader[R, B]](fab, a)
}
func Flap[R, A, B any](a A) func(Reader[R, func(A) B]) Reader[R, B] {
return G.Flap[Reader[R, func(A) B], Reader[R, B]](a)
}