1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-06-25 00:36:54 +02:00
Files
fp-go/internal/record/record.go

34 lines
785 B
Go
Raw Normal View History

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
}