const memoize = func => { const cache = new Map(); const memoized = arg => { const cached = cache.get(arg); if (cached !== undefined) { return cached; } const result = func(arg); cache.set(arg, result); return result; }; memoized.clearCache = cache.clear.bind(cache); return memoized; };