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

fix: add support for context sensitive readers

Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
Dr. Carsten Leue
2023-07-14 23:52:14 +02:00
parent 5020437b6a
commit 84c3e3ff88
101 changed files with 4440 additions and 13 deletions

22
readerio/generic/eq.go Normal file
View File

@@ -0,0 +1,22 @@
package generic
import (
EQ "github.com/ibm/fp-go/eq"
G "github.com/ibm/fp-go/internal/eq"
)
// Eq implements the equals predicate for values contained in the IO monad
func Eq[GEA ~func(R) GIOA, GIOA ~func() A, R, A any](e EQ.Eq[A]) func(r R) EQ.Eq[GEA] {
// comparator for the monad
eq := G.Eq(
MonadMap[GEA, func(R) func() func(A) bool, GIOA, func() func(A) bool, R, A, func(A) bool],
MonadAp[GEA, func(R) func() bool, func(R) func() func(A) bool],
e,
)
// eagerly execute
return func(ctx R) EQ.Eq[GEA] {
return EQ.FromEquals(func(l, r GEA) bool {
return eq(l, r)(ctx)()
})
}
}