Attributes
Includes Deno configuration
Repository
Current version released
10 months ago
memz 
Wrap any function with a cache.
import memoize from "jsr:@korkje/memz";
const add = memoize((a: number, b: number) => a + b);Recursion:
const fib = memoize((n: number): number => {
if (n < 2) {
return n;
}
return fib(n - 2) + fib(n - 1);
});Initial cache:
// Start with 2 and 1, i.e. create the Lucas sequence.
const cache = { "[0]": 2, "[1]": 1 };
const fib = memoize(
(n: number): number => fib(n - 2) + fib(n - 1),
{ cache },
);By default, cache keys are arguments serialized to JSON, hence the "[0]" and "[1]" keys above.
Custom cache keys:
const fib = memoize(
(n: number): number => fib(n - 2) + fib(n - 1),
{ keyFn: n => n },
);