We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Generate result-cached version of a function.
function memoize(x, fr, cache) // x: a function // fr: resolver ((...args) => unique key) [IDENTITY] // cache: result cache [Map()]
const xfunction = require('extra-function'); var calls = 0; function factorialRec(n: number) { if (n<=1) return 1; return n * factorialRec(n-1); } function factorial(n: number) { ++calls; return factorialRec(n); } var fn = xfunction.memoize(factorial); fn(3); // → 6 fn(4); // → 24 fn(5); // → 120 fn(3); // → 6 fn(4); // → 24 fn(5); // → 120 calls; // → 3 var calls = 0; function hypot(x: number, y: number) { ++calls; return Math.hypot(x, y); } function resolver(x: number, y: number) { return 4093*y + x; // a hash } var fn = xfunction.memoize(hypot, resolver); fn(3, 4); // → 5 fn(6, 8); // → 10 fn(5, 12); // → 13 fn(3, 4); // → 5 fn(6, 8); // → 10 fn(5, 12); // → 13 calls; // → 3