1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-11-27 22:28:29 +02:00
Files
fp-go/internal/record/record.go
Dr. Carsten Leue c07df5c771 initial checkin
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
2023-07-07 22:31:06 +02:00

34 lines
785 B
Go

package record
func Reduce[M ~map[K]V, K comparable, V, R any](r M, f func(R, V) R, initial R) R {
current := initial
for _, v := range r {
current = f(current, v)
}
return current
}
func ReduceWithIndex[M ~map[K]V, K comparable, V, R any](r M, f func(K, R, V) R, initial R) R {
current := initial
for k, v := range r {
current = f(k, current, v)
}
return current
}
func ReduceRef[M ~map[K]V, K comparable, V, R any](r M, f func(R, *V) R, initial R) R {
current := initial
for _, v := range r {
current = f(current, &v) // #nosec G601
}
return current
}
func ReduceRefWithIndex[M ~map[K]V, K comparable, V, R any](r M, f func(K, R, *V) R, initial R) R {
current := initial
for k, v := range r {
current = f(k, current, &v) // #nosec G601
}
return current
}