fn: add reduce func

This commit is contained in:
Olaoluwa Osuntokun 2024-01-02 17:16:56 -08:00
parent d702158d9b
commit f166829fe4
No known key found for this signature in database
GPG key ID: 3BBD59E99B280306

17
fn/func.go Normal file
View file

@ -0,0 +1,17 @@
package fn
// Reducer represents a function that takes an accumulator and the value, then
// returns a new accumulator.
type Reducer[T, V any] func(accum T, value V) T
// Reduce takes a slice of something, and a reducer, and produces a final
// accumulated value.
func Reduce[T any, V any, S []V](s S, f Reducer[T, V]) T {
var accum T
for _, x := range s {
accum = f(accum, x)
}
return accum
}