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

fix: add writer

Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
Dr. Carsten Leue
2023-07-23 21:45:32 +02:00
parent 205b728bda
commit 9e14cd1c00
21 changed files with 8249 additions and 7731 deletions

21
writer/generic/eq.go Normal file
View File

@@ -0,0 +1,21 @@
package generic
import (
EQ "github.com/IBM/fp-go/eq"
T "github.com/IBM/fp-go/tuple"
)
// Constructs an equal predicate for a [Writer]
func Eq[GA ~func() T.Tuple2[A, W], W, A any](w EQ.Eq[W], a EQ.Eq[A]) EQ.Eq[GA] {
return EQ.FromEquals(func(l, r GA) bool {
ll := l()
rr := r()
return a.Equals(ll.F1, rr.F1) && w.Equals(ll.F2, rr.F2)
})
}
// FromStrictEquals constructs an `Eq` from the canonical comparison function
func FromStrictEquals[GA ~func() T.Tuple2[A, W], W, A comparable]() EQ.Eq[GA] {
return Eq[GA](EQ.FromStrictEquals[W](), EQ.FromStrictEquals[A]())
}