github.com/agrigoryan/aoc_2023_go@v0.0.0-20231216221323-4ace361ec685/aocutils/func.go (about) 1 package aocutils 2 3 func Filter[T any](arr []T, filter func(T) bool) []T { 4 filtered := []T{} 5 for _, item := range arr { 6 if filter(item) { 7 filtered = append(filtered, item) 8 } 9 } 10 return filtered 11 } 12 13 func Map[T any, R any](arr []T, transform func(T) R) []R { 14 transformed := []R{} 15 for _, item := range arr { 16 transformed = append(transformed, transform(item)) 17 } 18 return transformed 19 } 20 21 func Mapper[T any, R any](transform func(T) R) func([]T) []R { 22 return func(arr []T) []R { 23 transformed := []R{} 24 for _, item := range arr { 25 transformed = append(transformed, transform(item)) 26 } 27 return transformed 28 } 29 } 30 31 func Filterer[T any](filter func(T) bool) func([]T) []T { 32 return func(arr []T) []T { 33 filtered := []T{} 34 for _, item := range arr { 35 if filter(item) { 36 filtered = append(filtered, item) 37 } 38 } 39 return filtered 40 } 41 }