Memoizar
declarativePure functionsInmutablecurryingfunctors
// Un memoizador más funcional
// Podemos potenciar nuestro módulo añadiendo funciones más adelantevar Memoizer = (function () { // Datos privados var cache = {}; // ¡Las funciones nombradas son increíbles! function cacher(func) { return function () { var key = JSON.stringify(arguments); if (cache[key]) { return cache[key]; } else { val = func.apply(this, arguments); cache[key] = val; return val; } }; } // Datos públicos return { memo: function (func) { return cacher(func); }, };})();
var fib = Memoizer.memo(function (n) { if (n < 2) { return 1; } else { return fib(n - 2) + fib(n - 1); }});