package slices import "git.milar.in/milarin/gmath" func Reduce[T, R any](slice []T, reducer func(current R, v T) R) R { res := new(R) Each(slice, func(v T) { *res = reducer(*res, v) }) return *res } func SumReducer[N gmath.Number](a, b N) N { return a + b }