Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

strong-roots-capital/memoize

Repository files navigation

memoize

Build Status

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

Install

npm install @strong-roots-capital/memoize

Use

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).

Related

Acknowledgments