github.com/seeker-insurance/kit@v0.0.13/umath/functional.go (about) 1 package umath 2 3 func Map(f func(uint) uint, a []uint) []uint { 4 mapped := make([]uint, len(a)) 5 for i, n := range a { 6 mapped[i] = f(n) 7 } 8 return mapped 9 } 10 11 func Filter(f func(uint) bool, a []uint) []uint { 12 filtered := make([]uint, 0, len(a)) 13 for _, n := range a { 14 if f(n) { 15 filtered = append(filtered, n) 16 } 17 } 18 return filtered 19 } 20 21 func Reduce(f func(uint, uint) uint, start uint, a ...uint) uint { 22 reduced := start 23 for _, n := range a { 24 reduced = f(reduced, n) 25 } 26 return reduced 27 } 28 29 func Accumulate(f func(uint, uint) uint, a []uint) []uint { 30 accumulated := make([]uint, len(a)) 31 if len(a) == 0 { 32 return accumulated 33 } 34 accumulated[0] = a[0] 35 for i, n := range a[1:] { 36 accumulated[i+1] = f(accumulated[i], n) 37 } 38 return accumulated 39 }