--- name: memoize kind: function lang: go domain: core version: "1.0.0" purity: pure signature: "func Memoize[K comparable, V any](fn func(K) V) func(K) V" description: "Cachea resultados de una funcion pura. Retorna una nueva funcion que almacena en un mapa interno los resultados ya calculados, evitando recalculos para la misma clave." tags: [cache, memoize, functional, generic] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: [] tested: false tests: [] test_file_path: "" file_path: "functions/core/memoize.go" --- ## Ejemplo ```go fib := Memoize(func(n int) int { if n <= 1 { return n } // nota: para recursion memoizada se necesita declarar la variable antes return n // simplificado }) doubled := Memoize(func(x int) int { return x * 2 }) doubled(5) // calcula: 10 doubled(5) // cache hit: 10 ``` ## Notas Funcion pura generica (referencialmente transparente). El cache interno es un map[K]V sin sincronizacion, por lo que la funcion retornada es segura solo para uso en una sola goroutine. K debe ser comparable para usarse como clave del mapa.