Higher-order memoization function
Why?
I couldn't find a simple memoization library that was all of the following
- stable
- statically typed
- control over memory usage
- used the fastest LRU
- offered the simplest syntax
npm install @strong-roots-capital/memoize
import { memoize } from '@strong-roots-capital/memoize'
declare function f(parameter: number)
const cacheSize = 100
const memoized = memoize(cacheSize)(f)
// Then use `memoized` in place of `f`
memoized(42)
Note that the underlying LRU is implemented with an es6 map, so cache hits are governed by the rules of Map.prototype.get; for example, objects are compared with strict equality.
As a result, memoize
only accepts thunks (functions accepting zero arguments) and
unary functions (functions accepting a single argument).