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
445 B
Go
17 lines
445 B
Go
package core
|
|
|
|
// Memoize wraps a pure function fn so that results are cached by key.
|
|
// Subsequent calls with the same key return the cached value without calling fn again.
|
|
// The returned function is safe for single-goroutine use.
|
|
func Memoize[K comparable, V any](fn func(K) V) func(K) V {
|
|
cache := make(map[K]V)
|
|
return func(key K) V {
|
|
if val, ok := cache[key]; ok {
|
|
return val
|
|
}
|
|
val := fn(key)
|
|
cache[key] = val
|
|
return val
|
|
}
|
|
}
|