16e34a806e
Funciones genericas reutilizables: - RetryWithBackoff: reintento con backoff exponencial (impure) - Memoize: cache de funciones puras (pure) - Pipeline: composición T→T en secuencia (pure) - MapConcurrent: map paralelo con worker pool (impure) - Partition: divide slice en dos por predicado (pure) - Chunk: divide slice en trozos de tamaño N (pure) Todas con implementación real y documentación .md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
17 lines
482 B
Go
17 lines
482 B
Go
package core
|
|
|
|
// Partition splits xs into two slices: the first contains elements where pred returns true,
|
|
// the second contains elements where pred returns false. Original order is preserved in both.
|
|
func Partition[T any](xs []T, pred func(T) bool) ([]T, []T) {
|
|
trueSlice := make([]T, 0)
|
|
falseSlice := make([]T, 0)
|
|
for _, x := range xs {
|
|
if pred(x) {
|
|
trueSlice = append(trueSlice, x)
|
|
} else {
|
|
falseSlice = append(falseSlice, x)
|
|
}
|
|
}
|
|
return trueSlice, falseSlice
|
|
}
|