Skip to main content
Deno 2 is finally here 🎉️
Learn more

memz JSR

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 },
);