Задача

Напишите функцию memoize(func), которая кеширует результаты вызова func по её аргументам (достаточно поддержки примитивных аргументов).

Пример

const slowSquare = (n) => {
    // тяжёлое вычисление
    return n * n;
};
 
const memoized = memoize(slowSquare);
 
memoized(4); // 16 — вычисляет и кеширует
memoized(4); // 16 — берёт из кеша, без повторного вызова slowSquare
memoized(5); // 25 — новый аргумент, вычисляет

Решение

См. также