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  }