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:
22
readerio/generic/eq.go
Normal file
22
readerio/generic/eq.go
Normal 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)()
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user